如果您的计算可以在 JavaScript 中重现,最简单的方法是使用 jQuery 来获取所有项目,如下所示:
$("#myGridView input[type='text']").each(function(){
this.change(function(){
updateTotal(this.value);
});
});
或者,如果您的计算过于复杂而无法在 JavaScript 中完成(或者时间限制阻止了它),那么对 Web 服务的 AJAX 调用是最好的方法。假设我们的网络服务是这样的:
[WebMethod, ScriptMethod]
public int UpdateTotal(int currTotal, int changedValue){
// do stuff, then return
}
您需要一些 JavaScript 来调用 Web 服务,您可以使用 jQuery 或 MS AJAX 来完成。我将展示两者的组合,只是为了好玩:
$("#myGridView input[type='text']").each(function(){
this.change(function(){
Sys.Net.WebServiceProxy.invoke(
"/Helpers.asmx",
"UpdateTotal",
false,
{ currTotal: $get('totalField').innerHTML, changedValue: this.value },
showNewTotal
);
});
});
function showNewTotal(res){
$get('totalField').innerHTML = res;
}
查看此链接以获取有关 Sys.Net.WebServiceProxy.invoke 方法的完整信息:http://www.asp.net/AJAX/Documentation/Live/ClientReference/Sys.Net/WebServiceProxyClass/WebServiceProxyInvokeMethod.aspx