asp.net - 在 ASP.NET 中总计 GridView

标签 asp.net javascript ajax gridview

在我的一个 ASP.NET Web 应用程序中,我使用 BulkEditGridView (一个允许同时编辑所有行的 GridView)来实现订单表单。在我的网格中,我有一个列用于计算每个项目的总计(成本 x 数量),并且页面底部有一个总计字段。然而,目前这些字段仅在每次回发时刷新。我需要动态更新这些字段,以便当用户更改数量时,总计和总计会更新以反射(reflect)新值。我尝试使用 AJAX 解决方案来完成此任务,但异步回发会干扰页面上的焦点。我想存在一个纯粹的客户端解决方案,我希望社区中有人可以分享。

最佳答案

如果您的计算可以在 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

关于asp.net - 在 ASP.NET 中总计 GridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/147364/

相关文章:

javascript - PHP 在 URL 字符串中连接变量

javascript - flutter inappwebview 未在控制台上打印

php - 使用 AJAX 更改面板标题文本

ajax - 使用AJAX的g验证码响应

c# - ASP.Net MVC 项目中的 HttpCompileException

c# - 如何创建调用两个表的操作方法

javascript - Chrome 使用 AudioContext 时更改音频元素源的问题

javascript - 无法在 IE 8 及以下版本中使用 jQuery 解析文件,因为它不是 XML(即使它有点像 XML)

javascript - 一键调用javascript和c#方法

sql - ADO.NET 池连接无法重用