具有拖放重新排序功能的简单网格视图

本文关键字:功能 简单 简单网 视图 网格 排序 拖放 新排序 | 更新日期: 2023-09-27 18:30:49

我有一个简单的Gridview

<asp:GridView ID="taskGrid" Width="100%" OnSelectedIndexChanged="taskGrid_SelectedIndexChanged"
 AutoGenerateColumns="false" runat="server">
    <EmptyDataTemplate>
        Choose Items from Drop Down Lists
    </EmptyDataTemplate>
    <Columns>
        <asp:TemplateField HeaderStyle-Width="5%" ItemStyle-Width="5%">
            <ItemTemplate>
                <asp:ImageButton CommandName="Select" CommandArgument='<%# Eval("TaskID") %>' 
                                Width="10px" Height="10px" ID="imgRedX" ToolTip='<%# Eval("TaskID") %>' 
                                ImageUrl="~/Images/redX.png"  OnClick="taskGrid_SelectedIndexChanged" 
                                runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField HeaderStyle-Width="47.5%" ItemStyle-Width="47.5%"
                        DataField="ServerName" HeaderText="Deploy Dashboard" />
        <asp:BoundField HeaderStyle-Width="47.5%" ItemStyle-Width="47.5%"
                        DataField="ApplicationName" HeaderText="Deploy Task" />
    </Columns>
</asp:GridView>

我希望能够做到的是基本的行拖放重新排序。

我看过很多解决方案,甚至想到了重新订购列表,但没有一个真正适合我的简单需求。此Gridview由我填充自定义对象(无Datasource Controls)的代码隐藏提供支持。

我对 AJAX 感兴趣,但前提是它也更新对象,而不仅仅是Grid Container

具有拖放重新排序功能的简单网格视图

你必须在实现它时考虑到以下几点:

  1. 您需要在服务器端保留顺序,以便完整回发将显示正确的顺序

  2. 你需要一些东西(也许是一个jQuery插件?)允许你直观地交换行。

  3. 您需要以可以在客户端找到源行和目标行的键的方式修改脚本(您可以,即将它们包含在网格视图模板内的隐藏文件中,并在 RoWDataBound 上分配其值)

  4. 您需要创建 Web 服务或静态页面方法,以将更改从客户端发送到服务器

  5. TOU 需要将更改从客户端发送到 Web 服务或静态页面方法

  6. 您还需要处理 Ajax 错误(转到本文的客户端脚本部分):

所以,不,没有简单的方法可以做到这一点。除非 C1 或 Telerik 有一些付费控制权这样做。