使用 JQuery Sortable 重新排序后如何将 .NET Gridview 行顺序保存到数据库

Posted

技术标签:

【中文标题】使用 JQuery Sortable 重新排序后如何将 .NET Gridview 行顺序保存到数据库【英文标题】:How to save .NET Gridview row order to database after reordering using JQuery Sortable 【发布时间】:2017-07-04 19:57:16 【问题描述】:

我有一个包含两个字段的数据库表,ColumnNameSortOrder

我正在使用 gridview 在 C# .NET Web 应用程序的页面上显示 ColumnName 字段。

我希望用户能够通过拖放 gridview 行来重新排序行,然后通过将新行号插入到 DB 表的 SortOrder 字段中来将这个新顺序保存到数据库中。

我已设法使用JQueryUI Sortable 使拖放功能正常工作。但我正在努力获取行服务器端的新顺序,以便将其导入数据库。

网格视图代码

<asp:GridView ID="GV_ColumnNames" runat="server" CssClass="sortable">
    <Columns>
        <asp:BoundField DataField="ColumnName" HeaderText="ColumnName" SortExpression="ColumnName" />
    </Columns>
</asp:GridView>

JQuery

    $(function () 

        $(".sortable").sortable(
            items: "tr:not(tr:first-child)",
            axis: "y"
        ).disableSelection();

    );

作为测试我是否可以获得新的行顺序客户端,我在下面编写了 C# 代码,但这只是输出原始行顺序。

    protected void BTN_Confirm_Click(object sender, EventArgs e)
    
        string orderTest = "";

        foreach(GridViewRow row in GV_FlatFileColumnSetting.Rows)
        
            orderTest += row.Cells[0].Text;
        

        Response.Write(orderTest);

    

是否有人对我如何从客户端获取行顺序到服务器端有任何想法,以便我可以运行 SQL 命令将新顺序插入数据库?

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

jquery 可排序为每次删除元素时都会触发的更新事件。它还有一个 toArray 方法,该方法按元素当前出现的顺序返回元素 id 的数组。 将它与 AJAX 一起使用,您可以执行类似的操作来调用服务器端代码。 这会将 id 数组作为需要在服务器端解码的 json 字符串传递。

$(function () 
  $(".sortable").sortable(
    items: "tr:not(tr:first-child)",
    axis: "y",
    update: function(event, ui) 
      var sortedIDs = $(event.target).sortableGrid( "toArray" );
      $.ajax(
        url: your url,
        data: JSON.stringify(sortedIDs)
      );
    
  ).disableSelection();
);

对不起,我不知道 .NET,所以我不能帮助你服务器端,但希望这会有所帮助。

【讨论】:

以上是关于使用 JQuery Sortable 重新排序后如何将 .NET Gridview 行顺序保存到数据库的主要内容,如果未能解决你的问题,请参考以下文章

拖放后的jQuery UI Sortable停止事件

jQuery sortable live() 不排序

排序前后的jQuery sortable get .index()?

jQuery UI Droppable and Sortable - 放置在正确的排序位置

jQuery Draggable + Sortable - 如何拒绝放入排序?

jQuery UI可排序点击事件