2012-01-05 40 views
0

我有一个列表进入中继器,使用jquery sortable()进行排序,然后需要将排序后的列表放入会话变量中。我似乎无法弄清楚如何将排序后的值返回到列表中。在使用中继器排序后的返回列表

HTML代码:

<div> 
<asp:Repeater ID="LstSortable" runat="server"> 
    <HeaderTemplate> 
     <ul id="sortable"> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <li> 
      <%# Container.DataItem %> 
     </li> 
    </ItemTemplate> 
    <FooterTemplate> 
     </ul> 
    </FooterTemplate> 
</asp:Repeater> 

</div> 

页面加载:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    'create test array 
    Dim order As New List(Of String) 
    order.Add("Item1") 
    order.Add("Item2") 
    order.Add("Item3") 
    order.Add("Item4") 

    'testing repeater 
    LstSortable.DataSource = order 

    LstSortable.DataBind() 

End Sub 

按下按钮把排序列表到会话变量:

这是我与打码,它目前并不工作:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 

    Dim orderBy As New List(Of String) 

    Dim count As Integer 
    For count = 0 To LstSortable.Items.Count - 1 Step count + 1 
     Dim chk As ListItem = CType(LstSortable.Items(count).FindControl(LstSortable.ID), ListItem) 
    Next 

    Session("OrderBy") = orderBy 

End Sub 

任何帮助表示赞赏。谢谢。

这是使用vb.net。

回答

0

我通过使用jQuery创建li元素数组,然后使用ajax调用将它们传递给webservice来解决此问题。

我不得不启用会话在Web服务:

<WebMethod(EnableSession:=True)> _ 

然后我分析的阵列成一个字符串,并放置在会话变量。

的jQuery:

 $("#sortable").sortable({ 
      placeholder: "vacant", 
      update: function(e, ui) { 

       //create vars 
       var orderArray = [], wrap = {}; 

       $("#sortable li").each(function(i) { 

        var imgObj = $(this).text(); 
        //alert(imgObj); 
        //add object to array 
        orderArray.push(imgObj); 
       }); 

       //wrap in object 
       wrap.d = orderArray; 

       //pass to server 
       $.ajax({ 
        type: "POST", 
        url: "../WebService.asmx/updateOrder", 
        data: JSON.stringify(wrap), 
        contentType: "application/json; charset=utf-8", 
        success: function(data) { 
         if (data.d === "saved") { 
          alert("success"); 
         } else { 
          alert("fail"); 
         } 
        }, 
        error: function(xmlHttpRequest, status, err) { 
         alert("This has error: " + err); 
        } 

       }); 

      } 
     }); 

Web服务:

Public Class WebService 
Inherits System.Web.Services.WebService 

<WebMethod(EnableSession:=True)> _ 
Public Function updateOrder(ByVal d As String()) As String 

    'process JSON object 
    Dim orderBy As String 
    Dim str As String 
    orderBy = New String(" Order By ") 
    For Each str In d 
     'define procedure 
     orderBy += str 
    Next 

    Session("OrderBy") = orderBy 

    'success! 
    Return "saved" 

End Function 

End Class 
相关问题