首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.Net:不使用回发将值从JavaScript传递到C#

.Net:不使用回发将值从JavaScript传递到C#
EN

Stack Overflow用户
提问于 2018-10-15 23:57:20
回答 2查看 230关注 0票数 0

我使用第三方网格视图(DevExpress web form ASPxGridView)制作了一个.Net web应用程序。

假设我有两个网格(Grid1和Grid2,都是devexpress)。

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

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

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

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

有没有人知道一种方法,可以在不回发的情况下将客户端变量传递给c#,或者从JavaScript调用非静态c#方法?任何建议都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-10-16 01:26:27

要做到这一点,最基本的方法包括两部分,第1部分)在现有的网格页面上添加一个ajax js函数来处理click事件和发出数据请求。第2部分)编写一个单独的C#网页来接收客户端的GRID1变量,对其进行相应的处理,然后使用Grid2的数据进行响应。下面是ajax调用的一些伪代码,希望它能有所帮助。

代码语言:javascript
复制
//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
          }
    }});
});
票数 0
EN

Stack Overflow用户

发布于 2018-10-16 03:05:27

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52820550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档