我使用第三方网格视图(DevExpress web form ASPxGridView)制作了一个.Net web应用程序。
假设我有两个网格(Grid1和Grid2,都是devexpress)。
我遇到了一个问题,我需要根据在Grid2上单击的列(在onClick事件期间)来更新Grid1中的值。
我能够捕获JavaScript中的行和列,但无法将其传递回我的服务器端代码。
网格有一些与编辑模式相关的设置,如果页面执行完全回发,网格将丢失其编辑。
我尝试过设置HiddenField和调用回发,但这会删除网格中的编辑内容。我尝试将变量传递给静态方法,但无法访问页面上的控件来更新Grid2。我已经研究过尝试进行回调而不是回发,但看起来回调引用了客户端方法。
有没有人知道一种方法,可以在不回发的情况下将客户端变量传递给c#,或者从JavaScript调用非静态c#方法?任何建议都将不胜感激。
发布于 2018-10-16 01:26:27
要做到这一点,最基本的方法包括两部分,第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
}
}});
});
发布于 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事件来强制依赖网格自定义回调(并进一步刷新)。
https://stackoverflow.com/questions/52820550
复制相似问题