2017-10-09 74 views
1

我已經實現了在我的網頁上拖放jquery,並且它一直正常工作。我按照用戶選擇從代碼中加載列,用戶可以根據他們的需要編輯這些列。但是,當我試圖獲取在目標列中選擇的項目時,其repeater.items計數爲零,並且源repeater.items計數與頁面加載時相同。這是代碼。從代碼後面的代碼中獲取可排序變量中丟棄項的值

<div class="Content" id="DragAndDrop" style="width: 100%; display: flex; justify-content: center; font-size: 9px;"> 
        <ul id="sortable1" class="connectedSortable" style="width: 45%; border: groove"> 
         <asp:Repeater ID="DivisionSource" runat="server"> 
          <ItemTemplate> 
           <%--<li class="ui-state-default" id="lblSource" ><%# Eval("DivisionName") %></li>--%> 
           <li class="ui-state-default" > 
            <asp:Label id="lblSource" runat="server" Text='<%# Eval("DivisionName") %>' ></asp:Label> </li> 
          </ItemTemplate> 
         </asp:Repeater> 
        </ul> 
        <ul id="sortable2" class="connectedSortable" style="width: 45%; border: groove; list-style: none"> 
         <asp:Repeater ID="DivisionDest" runat="server" > 
          <ItemTemplate> 
           <li class="ui-state-default" > 
            <asp:Label id="lblDest" runat="server" Text='<%# Eval("DivisionName") %>' ></asp:Label> </li> 
           <%-- <li class="ui-state-default" id="<%# Eval("DivisionID") %>" style="display: none;">SAP: Strategizing Activities and Practices</li>--%> 
          </ItemTemplate> 
         </asp:Repeater> 
        </ul> 
       </div> 

的數據由數據綁定repeter限定在頁面加載()

DivisionSource.DataSource = DivResultSource 
       DivisionSource.DataBind() 

       DivisionDest.DataSource = DivResultDest 
       DivisionDest.DataBind() 

代碼後面訪問數據:

Dim DivisionSource As Repeater = Wizard1.FindControl("DivisionSource") 
Dim DivisionDest As Repeater = Wizard1.FindControl("DivisionDest")  
Dim SelectedDivisionvalue As String = Nothing 
           Dim i As Integer = 1 
           For Each item As RepeaterItem In DivisionDest.Items 
            If (item.ItemType = ListItemType.Item) Then 


             Dim lblValue As Label = CType(item.FindControl("lblDest"), Label) 
             SelectedDivisionvalue = lblValue.Text 
             i += 1 
            End If 
           Next 

在回發,DivisionSource.items計數是相同默認時頁面加載並且DivisionDest.items計數爲0.

回答

0

我最終做的是我能夠從javascrip函數中獲取源和目標repeater的順序。我將隱藏變量的順序值保存下來並傳遞給後面的代碼。這是我能夠得到訂單的方式。

$("#sortable1, #sortable2").sortable({ 
connectWith: ".connectedSortable", 
    receive: function (event, ui) { 
     // alert('Receive!'); 

     var $self = $(this); 
     var $item = ui.item; 
     var $sender = ui.sender; 
     if ($(event.target).attr("id") == "sortable2") { 

      var order1 = $sender.sortable('toArray').toString(); 
      var order2 = $self.sortable('toArray').toString(); 

      //alert("Order 1:" + order1 + "\n Order 2:" + order2); 
      } 
     }, 
}).disableSelection(); 

var order2 = $self.sortable('toArray') 

會給你訂購的ArrayList,你可以做.lenght等功能calcaulate沒有任何項目,如果你婉限制用戶一個限制。

1

您嘗試添加服務器端控件ols在客戶端拖放。服務器控件在服務器端渲染,你不能用你的方式來完成。因此,控件添加到您的瀏覽器中的轉發器(客戶端),但當頁面發佈支持DivisionSource.items計數與默認相同時,它們不可用。

如果你想這樣做,你可以使用hidden fieldsession

+0

感謝您的回答,請參閱我的答案我是如何做到的。你的回答指引正確。 – Arpan

相關問題