目前我正在做拖拉删除GridView行,将新行顺序发送到 WebMethod ,以便根据这些新值更新数据库。
那么,如何在调用WebMethod后更新Web窗体中的GridView?考虑到我无法访问WebMethod中的任何webform元素。
网络方法:
[WebMethod]
public static void GridViewCarriersReorders(string Reorder)
{
Boolean result;
string[] ListID = Reorder.Split('|');
transactions tr = new transactions();
result = tr.updateLcrPriorities(ListID);
//updateGridViewCarriers(); //SOMETHING LIKE THIS IS NEEDED TO DO THE BINDING
}
非常感谢你的帮助和理解。
更新:这就是我调用webmethod的方式:
$.ajax({
type: "POST",
url: "lcrP.aspx/GridViewCarriersReorders",
data: '{"Reorder":"' + strorder + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function (msg) {
$.jGrowl("The Carriers priority was successfully updated", { theme: "succeeded" });
}
})
答案 0 :(得分:1)
如果在Gridview周围放置UpdatePanel,则只能为它调用回发:
success: function (msg) {
$.jGrowl("The Carriers priority was successfully updated", { theme: "succeeded" });
__doPostBack('UpdatePanel1', '');
}
修改强> 正如你自己发现的那样,我错过了写在OnLoad事件中你应该强制网格的数据绑定:
void OnLoad(EventArgs e) {
base.OnLoad(e);
myGrid.DataBind();
}
作为替代方案,如果您的网格绑定到xDataSource控件,则可以禁用网格的视图状态,以及是否在每次回发时强制使用DataBind。