从后面的代码获取可排序的comuns中的已删除项的值

时间:2017-10-09 23:07:49

标签: jquery asp.net vb.net jquery-ui jquery-ui-draggable

我已经在我的网页上实现了拖放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>

数据受到pageload()

上的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

在回发时,当加载页面和DivisionDest.items计数为0时,DivisionSource.items计数与默认值相同。

2 个答案:

答案 0 :(得分:1)

您尝试在客户端添加拖放服务器端控件。服务器控件在服务器端呈现,您不能按照自己的方式执行。因此,控件会在浏览器(客户端)中添加到转发器,但当页面发布支持DivisionSource.items计数与默认值相同时,它们将不可用。

  

如果您想这样做,可以使用hidden fieldsession

答案 1 :(得分:0)

我最终做的是能够从javascrip函数获取源和目标重复器的顺序。我将订单的值保存在隐藏变量中,并将其传递给后面的代码。以下是我能够获得订单的方式。

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

html

会在 arrayList 中为您提供订单,您可以执行 .lenght 和其他功能来解决如果您想将用户限制在限制范围内的项目。