我使用第三方gridview(DevExpress Web表单ASPxGridView)制作.Net Web应用。
假设我有两个网格(Grid1和Grid2,都为devexpress)。
我遇到了一个问题,我需要根据Grid1中的哪一列(在onClick事件期间)单击来更新Grid2中的值。
我能够捕获JavaScript中的行和列,但无法将其传递回我的服务器端代码。
网格具有与编辑模式相关的一些设置,即如果页面执行完整的回发,网格将丢失其编辑。
我尝试设置HiddenField并调用回发,但这会删除网格中的编辑内容。我尝试将变量传递给静态方法,但是无法访问页面上的控件来更新Grid2。我已经研究过尝试执行回调而不是回发,但是看起来回调正在引用客户端方法。
有人知道一种不通过回传将客户端变量传递给c#的方法,还是从JavaScript调用非静态c#方法的方法吗?任何建议将不胜感激。
答案 0 :(得分:0)
最基本的方法包括两部分,第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
}
}});
});
答案 1 :(得分:0)
如果您需要“连接c#”,则有必要向服务器执行请求(使用任何可用的技术-回调,回发等)。
如果在此请求期间需要刷新另一个控件(Grid2)呈现,则应作为此请求的结果返回相应的HTML内容。
根据提供的说明,您需要实现“级联网格”-即在更改主网格时更新从属网格。如果是这样,请使用https://github.com/DevExpress-Examples/how-to-show-detail-information-in-a-separate-aspxgridview-e70示例中说明的方法,并通过客户端的PerformCallback方法强制依赖的网格自定义回调(并进一步刷新),并处理服务器端的CustomCallback事件。