0

我在页面后面的代码中有以下 webmethods

[WebMethod]
[ScriptMethod]
public static string BindDataTable()
{
  //This function connects to db gets the result and binds a datatable
}

[WebMethod(EnableSession = true)]
[ScriptMethod]
public static string DeleteItems(int[] ids)
{
 //This function deletes the items
}

在 aspx 页面中,我有一个触发两种页面方法的元素

 <a href="#"  onclick="Delete()"> Delete</a>

删除js函数如下

     function Delete(){
PageMethods.DeleteItems(selectedIds);
PageMethods.BindDataTable();
   }

在firebug中检查控制台显示两个Pagemethods都被连续触发

  1. 删除项目
  2. 绑定数据表

但是,有时 BindDataTable 会在删除函数完成提交到数据库之前启动,这会阻止表在没有刷新的情况下进行视觉更新。

知道如何在前一个页面方法完成它的服务器端命令之后触发调用页面方法吗?谢谢

4

2 回答 2

0

您应该同步调用这两个方法,请参阅这篇文章:

http://weblogs.asp.net/ricardoperes/archive/2009/03/06/calling-web-service-methods-synchronously-in-asp-net-ajax.aspx

或者,如果您不需要其他方法,则可以在第一种方法中调用第二种方法。

于 2013-10-09T08:15:55.880 回答
0

嗨詹姆斯,

          I found one alternate way first call the delete web method once it completed on its success call BindDataTable web method . might be it work

函数删除(){

       PageMethods.DeleteItems(selectedIds);
        function onSucess(result) {
            PageMethods.BindDataTable();
        }

        function onError(result) {
            alert('Something wrong.');
        }
    }
</script>
于 2013-10-09T08:28:58.770 回答