Asp.net VB Webform。如何从代码隐藏的ul列表中获取li项目

时间:2016-01-06 14:28:35

标签: asp.net vb.net webforms html-lists code-behind

我需要帮助;)我使用来自Asp.net和htmlGenericControl的代码中的listitems填充ul。

列表项出现,这些项可以删除,并可通过jquery sortable和connectedSortable函数排序到不同的uls中。这很好。

例如我有3个列表。 UnorderdLists(ul's)A,B和C. 列表A中填充了一些项目。现在我可以将列表A中的这些列表项拖放到列表B或C中。

现在我需要帮助,我如何看到或得到(在代码隐藏中)哪个项目在列表B或C中?!

的信息:

  • 我不使用bulletlist因为我认为可丢弃/可排序会给我带来一些麻烦。
    • 我的ul已经添加了runat =“server”,我的李还必须这么做吗?

1 个答案:

答案 0 :(得分:0)

当我使用自定义或非标准控件时,我更喜欢使用隐藏字段并以自定义方式存储数据(例如,带有char分隔符的值)。

您可以通过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

希望这对你有所帮助。