C# 在Telerik RadListView中将项目从一个数据组拖放到另一个数据组

C# 在Telerik RadListView中将项目从一个数据组拖放到另一个数据组,c#,asp.net,.net,telerik,C#,Asp.net,.net,Telerik,我正在尝试使用Telerik RadListView拖放功能: 下面的代码工作正常,但循环遍历所有项以查找效率不高的“e.destinationHtmlement”。我希望能够使用更好的算法将Telerik RadListView的项目从一个数据组拖到另一个数据组。我该怎么做 ASPX代码: <telerik:RadListView runat="server" ID="Lsv_Vis" AllowPaging="True" PageSize="50" ItemPlacehold

我正在尝试使用Telerik RadListView拖放功能:

下面的代码工作正常,但循环遍历所有项以查找效率不高的“e.destinationHtmlement”。我希望能够使用更好的算法将Telerik RadListView的项目从一个数据组拖到另一个数据组。我该怎么做

ASPX代码:

<telerik:RadListView runat="server" ID="Lsv_Vis" AllowPaging="True" PageSize="50"
    ItemPlaceholderID="Phi_Vis_I" GroupPlaceholderID="Phi_Vis_G"
    DataKeyNames="url_id, lst_id, url_name, url_address" 
    ClientDataKeyNames="url_id, lst_id,     url_name, url_address"
    OnItemDrop="CsVisItemDrop" OnItemDataBound="CsVisIDB" DataSourceID="Sql_Vis">
</telerik:RadListView>

<DataGroups>
    <telerik:ListViewDataGroup GroupField="lst_id" DataGroupPlaceholderID="Phi_Vis_G">
        <DataGroupTemplate>
            <div class="Div_Vis_Grp"><span class="Spn_Vis"><%# (Container as RadListViewDataGroupItem).AggregatesValues["lst_name"].ToString() %></span></div>
            <asp:Panel ID="Pnl_Vis" runat="server" CssClass="Pnl_Vis" ToolTip='<%# (Container as RadListViewDataGroupItem).DataGroupKey %>' onmouseover='this.className += " Vis_Sel";' onmouseout='this.className = this.className.split(" Vis_Sel").join("");'>
                <asp:PlaceHolder ID="Phi_Vis_I" runat="server" />
            </asp:Panel>
        </DataGroupTemplate>
        <GroupAggregates>
            <telerik:ListViewDataGroupAggregate Aggregate="Max" DataField="lst_name" />
        </GroupAggregates>
    </telerik:ListViewDataGroup>
</DataGroups>
<ItemTemplate>
    <div class="Div_Vis_Item rlvI">
    <asp:Panel ID="Pnl_Vis" runat="server" ToolTip='<%# Eval("lst_id") %>' CssClass="Div_Vis_Item" onmouseover='this.className += " Vis_Sel";' onmouseout='this.className = this.className.split(" Vis_Sel").join("");'>
        <a class="Hyp_Vis" runat="server" href='<%# Eval("url_address") %>' target="_blank">
            <div class="Div_Vis_Body">
                <div class="Div_Vis_Con">
                    <asp:Panel ID="Div_Vis_Con" runat="server" class="Div_Vis_Con" ToolTip='<%# Eval("lst_id") %>' ></asp:Panel>
                </div>
            </div>
            <div class="Div_Vis_Link">
                <asp:Label ID="Lbl_VisI" runat="server" Text='<%# Eval("url_name_short") %>' ToolTip='<%# Eval("url_name") %>'/>
            </div>
        </a>
    </asp:Panel>
    </div>
</ItemTemplate>
protected void CsVisItemDrop (object sender, RadListViewItemDragDropEventArgs e)
{
    if (e.DestinationHtmlElement.IndexOf("Div_Vis_Con") < 0)
    {
        return;
    }

    foreach (RadListViewDataItem di in Lsv_Vis.Items)
    {
        Panel pnl = di.FindControl("Div_Vis_Con") as Panel;

        if (pnl != null && pnl.ClientID == e.DestinationHtmlElement)
        {
            string uid = e.DraggedItem.GetDataKeyValue("url_id").ToString();
            string lid = pnl.ToolTip.ToString();

            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Con_Str"].ToString()))
            {
                using (SqlCommand cmd = new SqlCommand("UPDATE [MyTable] SET lst_id = @lst_id WHERE url_id = @url_id", conn))
                {
                    cmd.Parameters.Add("@lst_id", SqlDbType.VarChar).Value = lid;
                    cmd.Parameters.Add("@url_id", SqlDbType.VarChar).Value = uid;
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch { }
                }
            }
        }
    }
    Lsv_Vis.Rebind();
}

C#代码:

<telerik:RadListView runat="server" ID="Lsv_Vis" AllowPaging="True" PageSize="50"
    ItemPlaceholderID="Phi_Vis_I" GroupPlaceholderID="Phi_Vis_G"
    DataKeyNames="url_id, lst_id, url_name, url_address" 
    ClientDataKeyNames="url_id, lst_id,     url_name, url_address"
    OnItemDrop="CsVisItemDrop" OnItemDataBound="CsVisIDB" DataSourceID="Sql_Vis">
</telerik:RadListView>

<DataGroups>
    <telerik:ListViewDataGroup GroupField="lst_id" DataGroupPlaceholderID="Phi_Vis_G">
        <DataGroupTemplate>
            <div class="Div_Vis_Grp"><span class="Spn_Vis"><%# (Container as RadListViewDataGroupItem).AggregatesValues["lst_name"].ToString() %></span></div>
            <asp:Panel ID="Pnl_Vis" runat="server" CssClass="Pnl_Vis" ToolTip='<%# (Container as RadListViewDataGroupItem).DataGroupKey %>' onmouseover='this.className += " Vis_Sel";' onmouseout='this.className = this.className.split(" Vis_Sel").join("");'>
                <asp:PlaceHolder ID="Phi_Vis_I" runat="server" />
            </asp:Panel>
        </DataGroupTemplate>
        <GroupAggregates>
            <telerik:ListViewDataGroupAggregate Aggregate="Max" DataField="lst_name" />
        </GroupAggregates>
    </telerik:ListViewDataGroup>
</DataGroups>
<ItemTemplate>
    <div class="Div_Vis_Item rlvI">
    <asp:Panel ID="Pnl_Vis" runat="server" ToolTip='<%# Eval("lst_id") %>' CssClass="Div_Vis_Item" onmouseover='this.className += " Vis_Sel";' onmouseout='this.className = this.className.split(" Vis_Sel").join("");'>
        <a class="Hyp_Vis" runat="server" href='<%# Eval("url_address") %>' target="_blank">
            <div class="Div_Vis_Body">
                <div class="Div_Vis_Con">
                    <asp:Panel ID="Div_Vis_Con" runat="server" class="Div_Vis_Con" ToolTip='<%# Eval("lst_id") %>' ></asp:Panel>
                </div>
            </div>
            <div class="Div_Vis_Link">
                <asp:Label ID="Lbl_VisI" runat="server" Text='<%# Eval("url_name_short") %>' ToolTip='<%# Eval("url_name") %>'/>
            </div>
        </a>
    </asp:Panel>
    </div>
</ItemTemplate>
protected void CsVisItemDrop (object sender, RadListViewItemDragDropEventArgs e)
{
    if (e.DestinationHtmlElement.IndexOf("Div_Vis_Con") < 0)
    {
        return;
    }

    foreach (RadListViewDataItem di in Lsv_Vis.Items)
    {
        Panel pnl = di.FindControl("Div_Vis_Con") as Panel;

        if (pnl != null && pnl.ClientID == e.DestinationHtmlElement)
        {
            string uid = e.DraggedItem.GetDataKeyValue("url_id").ToString();
            string lid = pnl.ToolTip.ToString();

            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Con_Str"].ToString()))
            {
                using (SqlCommand cmd = new SqlCommand("UPDATE [MyTable] SET lst_id = @lst_id WHERE url_id = @url_id", conn))
                {
                    cmd.Parameters.Add("@lst_id", SqlDbType.VarChar).Value = lid;
                    cmd.Parameters.Add("@url_id", SqlDbType.VarChar).Value = uid;
                    try
                    {
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    catch { }
                }
            }
        }
    }
    Lsv_Vis.Rebind();
}
protectedvoid csvisitemdop(对象发送方,RadListViewItemDragDropRopevenTargs e)
{
如果(e.DestinationHtmlement.IndexOf(“Div_Vis_Con”)<0)
{
回来
}
foreach(Lsv_Vis.Items中的RadListViewDataItem di)
{
面板pnl=作为面板的di.FindControl(“Div_Vis_Con”);
if(pnl!=null&&pnl.ClientID==e.destinationHtmlement)
{
字符串uid=e.DraggedItem.GetDataKeyValue(“url_id”).ToString();
string lid=pnl.ToolTip.ToString();
使用(SqlConnection conn=newsqlconnection(ConfigurationManager.ConnectionStrings[“Con_Str”].ToString())
{
使用(SqlCommand cmd=newsqlcommand(“更新[MyTable]设置lst_id=@lst_id,其中url_id=@url_id”,conn))
{
Add(“@lst_id”,SqlDbType.VarChar).Value=lid;
Add(“@url\u id”,SqlDbType.VarChar).Value=uid;
尝试
{
conn.Open();
cmd.ExecuteNonQuery();
康涅狄格州关闭();
}
捕获{}
}
}
}
}
Lsv_Vis.Rebind();
}