如何使用javascript在asp.net中调用函数?

时间:2015-03-03 09:30:16

标签: c# asp.net gridview tablednd

我正在使用jquery插件tablednd

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

使我的gridview中的行可拖动。 当我拖动一行时,我想在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++);
    });

在tablednd的启动之上。

谢谢!

1 个答案:

答案 0 :(得分: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做同样的事情检查this


  5. 回发方式:

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

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

    4. 更多关于从客户端here收集回发的信息。