Asp.net VB 网络表单。如何从代码隐藏的 ul 列表中获取 li 项目
Asp.net VB Webform. How to get li items from ul list at codebehind
我需要帮助 ;) 我使用 Asp.net 和 htmlGenericControl 背后代码中的列表项填充了一个 ul。
列表项出现,这些项可以通过 jquery sortable 和 connectedSortable 函数放置和排序到不同的 uls 中。这很好用。
例如我有 3 个列表。 UnorderdLists(ul's) A、B 和 C。
列表 A 填充了一些项目。现在我可以将这些列表项从列表 A 拖放到列表 B 或 C。
现在我需要帮助我如何查看或获取(in/at 代码隐藏)哪个项目在列表 B 或 C 中?!
信息:
- 我不使用项目符号列表,因为我认为 dropable/sortable 会给我带来一些麻烦。
- 我的 ul 已经添加了 runat="server",我的 li 也必须有这个吗?
当我使用自定义或非标准控件时,我更喜欢使用隐藏字段并以自定义方式存储数据(例如带有字符分隔符的值)。
您可以通过 Javascript/Jquery 在您的特定事件中填充您的隐藏字段,然后您可以从代码隐藏中读取隐藏字段。
更新示例
这只是一种可能,但更简单的可能是JQuery AJAX.
webform.aspx
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="webform.aspx.vb" Inherits="ajax_test.webform" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#send').click(function () {
$('#<%= HFTest.ClientID %>').val($('#theValue').val());
__doPostBack('<%= btn_force_async.ClientID %>','');
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
// Fire before the AJAX request
}
function EndRequestHandler(sender, args) {
// Fire after the AJAX request
if ($('#<%=HFReturnMessage.ClientID %>').val() == 'ok') {
alert('ok!');
} else {
alert($('#<%=HFReturnMessage.ClientID %>').val());
}
}
</script>
<input id="theValue" type="text" value="ok" />
<input id="send" type="button" value="send value" />
<asp:UpdatePanel ID="UPDHiddenFields" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:HiddenField ID="HFTest" runat="server" />
<asp:HiddenField ID="HFReturnMessage" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn_force_async" EventName="click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="btn_force_async" runat="server" style="display:none;"/>
</div>
</form>
</body>
</html>
webform.aspx.vb // 代码隐藏
Public Class webform
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
If HFTest.Value = "ok" Then
HFTest.Value = ""
HFReturnMessage.Value = "ok"
Else
HFTest.Value = ""
HFReturnMessage.Value = "error, the HFTest is not ok ! "
End If
UPDHiddenFields.Update() 'Update hidden field panel on client side
End If
End Sub
End Class
希望对您有所帮助。
我需要帮助 ;) 我使用 Asp.net 和 htmlGenericControl 背后代码中的列表项填充了一个 ul。
列表项出现,这些项可以通过 jquery sortable 和 connectedSortable 函数放置和排序到不同的 uls 中。这很好用。
例如我有 3 个列表。 UnorderdLists(ul's) A、B 和 C。 列表 A 填充了一些项目。现在我可以将这些列表项从列表 A 拖放到列表 B 或 C。
现在我需要帮助我如何查看或获取(in/at 代码隐藏)哪个项目在列表 B 或 C 中?!
信息:
- 我不使用项目符号列表,因为我认为 dropable/sortable 会给我带来一些麻烦。
- 我的 ul 已经添加了 runat="server",我的 li 也必须有这个吗?
当我使用自定义或非标准控件时,我更喜欢使用隐藏字段并以自定义方式存储数据(例如带有字符分隔符的值)。
您可以通过 Javascript/Jquery 在您的特定事件中填充您的隐藏字段,然后您可以从代码隐藏中读取隐藏字段。
更新示例
这只是一种可能,但更简单的可能是JQuery AJAX.
webform.aspx
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="webform.aspx.vb" Inherits="ajax_test.webform" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#send').click(function () {
$('#<%= HFTest.ClientID %>').val($('#theValue').val());
__doPostBack('<%= btn_force_async.ClientID %>','');
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
// Fire before the AJAX request
}
function EndRequestHandler(sender, args) {
// Fire after the AJAX request
if ($('#<%=HFReturnMessage.ClientID %>').val() == 'ok') {
alert('ok!');
} else {
alert($('#<%=HFReturnMessage.ClientID %>').val());
}
}
</script>
<input id="theValue" type="text" value="ok" />
<input id="send" type="button" value="send value" />
<asp:UpdatePanel ID="UPDHiddenFields" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:HiddenField ID="HFTest" runat="server" />
<asp:HiddenField ID="HFReturnMessage" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn_force_async" EventName="click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="btn_force_async" runat="server" style="display:none;"/>
</div>
</form>
</body>
</html>
webform.aspx.vb // 代码隐藏
Public Class webform
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
If HFTest.Value = "ok" Then
HFTest.Value = ""
HFReturnMessage.Value = "ok"
Else
HFTest.Value = ""
HFReturnMessage.Value = "error, the HFTest is not ok ! "
End If
UPDHiddenFields.Update() 'Update hidden field panel on client side
End If
End Sub
End Class
希望对您有所帮助。