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

Posted

技术标签:

【中文标题】从后面的代码中获取可排序社区中已删除项目的值【英文标题】:Get values of dropped items in sortable comuns from code behind 【发布时间】:2018-03-21 05:52:08 【问题描述】:

我已经在我的网页上实现了拖放 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() 上的重复数据绑定

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 计数与默认值相同。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

感谢您的回答,请看我的回答我是如何做到的。您的答案指引着正确的方向。【参考方案2】:

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

$("#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 和其他功能来计算数量项目,如果你想限制用户到一个限制。

【讨论】:

以上是关于从后面的代码中获取可排序社区中已删除项目的值的主要内容,如果未能解决你的问题,请参考以下文章

在 .NET 中回发后从后面的代码中获取 HTML5 输入类型搜索的值

测试 url 参数的值,然后从 c# 后面的代码中更改 SqlDataSource.SelectCommand

将项目放在可排序区域上时如何删除可排序区域的文本?

使用 asp.net 从后面的代码中获取 Jquery 的 Select2 的多个选定值

从注解返回的字典列表中获取name键的值,然后按名称排序?

交换排序之冒泡排序(java)