2016-01-06 90 views
0

我需要帮助;)我使用来自代码后面的代码,通过Asp.net和htmlGenericControl填充ul。Asp.net VB Webform。如何从代码隐藏的ul列表中获取li项目

列表中的项目出现,这些项目是可跌落和可排序成不同的uls槽jQuery排序和connectedSortable函数。这工作正常。

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

现在我需要帮助如何查看或获取(在/在codebehind)哪个项目在列表B或C?

信息:

  • 我不使用bulletlist因为我觉得dropable /排序会给我带来些麻烦吧。
    • 我的ul's已经添加了runat =“server”,我的li必须有这个吗?
+0

你可以发布你到目前为止尝试过的代码吗? –

+0

嗨thx的评论。我只有三个连接列表.. soo没有太多的代码。我现在会尝试巴洛的建议:) – mio

回答

0

当我使用自定义或不标准控件,我更喜欢在一个自定义的方式(与炭分离器例如值)使用隐藏字段和存储数据。

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

希望这有助于你。

+0

嗨,thx的答案,我会尝试隐藏的领域的东西:) – mio

+0

嘿。我向你的代码添加了你的建议。但是,如果我按一个按钮来从一个项目获取隐藏的数据。页面重新加载和jQuery添加的数据消失了。 – mio

+0

我不完全知道你的情况,但如果你需要不再重新加载页面,那么你必须使用AJAX请求。 – Baro