2012-01-05 4 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呼び出しを使用してWebサービスに渡すことで解決しました。

は、私は、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 
関連する問題