繁体   English   中英

.Net:在没有回发的情况下将值从JavaScript传递到C#

[英].Net: Passing values from JavaScript to C# without a Postback

我使用第三方gridview(DevExpress Web表单ASPxGridView)制作了一个.Net Web应用程序。

可以说我有两个网格(Grid1和Grid2,均为devexpress)。

我遇到一个问题,我需要根据Grid1中的哪一列(在onClick事件期间)单击来更新Grid2中的值。

我能够捕获JavaScript中的行和列,但无法将其传递回我的服务器端代码。

网格具有与编辑模式相关的一些设置,即如果页面执行完整的回发,则网格将丢失其编辑。

我尝试设置HiddenField并调用回发,但是这会删除网格中的编辑。 我尝试将变量传递给静态方法,但是无法访问页面上的控件来更新Grid2。 我已经研究过尝试执行回调而不是回发,但是看起来回调正在引用客户端方法。

有谁知道一种不通过回发将客户端变量传递给c#的方法,还是从JavaScript调用非静态c#方法的方法? 任何建议将不胜感激。

最基本的方法包括两个部分,第1部分)在现有网格页面上添加ajax js函数来处理click事件并发出数据请求。 第2部分)编写一个单独的C#网页,以接收客户端Grid1-变量,对其进行相应的处理,然后以Grid2的数据进行响应。 这是有关ajax调用可能看起来是什么样的伪代码,希望对您有所帮助。

//in your javascript section
$("#Grid1Cell").click(function(){
    $.ajax({
      type: "GET",
      url: '@Url.Action("GetGrid2Data", "SomeController")"?yourVar=' + encodeURI(yourVal), 
           //alternatively  url: "yourNonMVCpage.aspx?yourVar=" + encodeURI(yourVal), 
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (response) {
          if (response.SomeValues == "blah") {
              $("#Grid2Cell").text(response.SomeValues); //update Grid2
          }
    }});
});

如果您需要“连接c#”,则有必要向服务器执行请求(使用任何可用的技术-回调,回发等)。

如果在此请求期间需要刷新另一个控件(Grid2)呈现,则应作为此请求的结果返回相应的HTML内容。

根据提供的描述,您需要实现“级联网格”-即,在更改主网格时更新从属网格。 如果是这样,请使用https://github.com/DevExpress-Examples/how-to-show-detail-information-in-a-separate-aspxgridview-e70示例中说明的方法,并强制依赖网格自定义回调(和进一步刷新),方法是通过客户端的PerformCallback方法+处理服务器端的CustomCallback事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM