使用拖放时如何在服务器端获取新的GridView行顺序?

时间:2011-10-11 07:51:37

标签: javascript jquery asp.net gridview drag-and-drop

目前我正在使用表拖放插件(http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/)来实现我的拖放功能GridView行。

可能,我将不得不处理Drop事件并将新的行顺序发送到服务器,但我不知道如何做到这一点。

请记住,行顺序表示GridView中显示的记录的优先级。因此,新的行顺序将在Drop事件之后存储在数据库中。

这是jquery代码:

function load_lazyload() {
        $("#ContentPlaceHolder1_GridView").tableDnD({
            onDragClass: "GbiHighlight",
            onDrop: function (table, row) {
                var rows = table.tBodies[0].rows;
                var debugStr = "Row dropped was " + row.id + ". New order: ";
                for (var i = 0; i < rows.length; i++) {
                    debugStr += rows[i].id + " ";
                }
                $("#debugArea").html(debugStr);
            },
            onDragStart: function (table, row) {
                $("#debugArea").html("Started dragging row " + row.id);
            }
        });
}

如果有人可以指导我找到这个要求的解决方案,我会非常感激。

2 个答案:

答案 0 :(得分:0)

onDrop事件,您可以进行ajax调用并将debugStr发送到服务器以更新新的行顺序。

之类的东西
$("#ContentPlaceHolder1_GridView").tableDnD({
  onDrop: function(table, row) {
    var rows = table.tBodies[0].rows,
        newOrder = '';
    for (var i = 0; i < rows.length; i++) {
         newOrder += rows[i].id + " ";
    }

    $.ajax({
      url: 'server_method',
      data: {
        newOrder: newOrder
      }
    });
  }
});

如果需要,您可以在ajax调用中添加成功和错误处理程序。

答案 1 :(得分:0)

以下文章将详细解释问题的答案:

http://aspdotnet-example.blogspot.com/2011/10/gridview-reorder-row-drag-and-drop.html

希望它有所帮助!