0

我正在使用 jquery 插件 tablednd

$(document).ready(function () {
    $('#mygridview').tableDnD();
})

使我的网格视图中的行可拖动。当我拖动一行时,我想调用 asp.net 中的一个函数来保存行的位置。但是我在 gridview 上找不到仅对单击一行做出反应的正确事件。

tableDnd 中有一个 onDrop 方法。

$(document).ready(function () {
    $('#mygridview').tableDnD({
      onDrop: function(table, row) {
   });
})

但是我怎么能从那里调用一个 asp.net 方法呢?我读过一些关于 ajax 的帖子,但我不明白。

而且我还阅读了有关使用的信息PageMethods,但它没有调用我的函数。

问题是如何编写对数据库中的表执行更新的内容?

更新:

我使用 IPostBackEventHandler 方法解决了它。

我必须使用 IPostBackEventHandler 扩展我的用户控件和页面,然后在用户控件和页面上添加 public void RaisePostBackEvent(string eventArgument) 函数。最后:

onDrop: function (table, row) {
                __doPostBack('<%= this.UniqueID %>', 'Select');
            }

如果有人对 onDrop 有疑问,解决方案是您必须为每一行提供 ID,如下所示:

    var i = 0;
    $("#<%= gridviewID.ClientID %>").find('tr').each(function () {
        $(this).attr('id', i++);
    });

在表格的启动之上。

谢谢!

4

1 回答 1

2

一般有两种方式,一种使用AJAX,第二种使用回发。

AJAX方式:

  1. 将 ScriptManager 添加到页面,如下所示:

    <asp:ScriptManager runat="server"
           ID="ScriptManager1" 
           EnablePageMethods="true"
           EnablePartialRendering="true"
    />
    
  2. 使服务器端方法被称为公共静态。还使用 System.Web.Services.WebMethod 属性对其进行标记,如下所示:

    [WebMethod]
    public static string DoServerStuff(string parameter)
    {
        return "Parameter passed: " + parameter;
    }
    
  3. 通过 PageMethods 类从客户端调用它,如下所示:

    function doClientStuff() {
        var result = PageMethods.DoServerStuff('test parameter');
        alert(result);
    }
    
  4. 对于使用 jQuery 做同样的事情,请查看这个


回传方式:

  1. 使页面(包含要调用的方法)实现 IPostBackEventHandler 接口。
  2. 在客户端调用 __doPostback 方法,如下所示:

    function doClientStuff() {
        var result = __doPostBack('<%= this.UniqueID %>', 'Select');
    }
    
  3. 在页面的 IPostBackEventHandler.RaisePostBackEvent 方法中实现服务器端逻辑。

  4. 更多关于从客户端提高回发的信息

于 2015-03-03T10:21:20.210 回答