asp.net webforms ajax 更新gridview
Posted
技术标签:
【中文标题】asp.net webforms ajax 更新gridview【英文标题】:asp.net webforms ajax update gridview 【发布时间】:2011-10-05 00:31:47 【问题描述】:我们有一个包含大量信息(100 个或行和列)的网格视图,我们需要提高其性能。
目前为了解决一些性能问题,我们使 gridview 没有编辑模板,而是双击一个单元格将显示一个可用选项的下拉列表,该下拉列表使用 webmethods 检索并使用 jquery 动态填充,在选择选项后我们将 html 中的下拉菜单设置为所选选项的值。
我们在随后将此更改发送回服务器时遇到问题,我们在页面上有一个按钮,该按钮会导致回发到服务器,但是当我们循环访问时,我们通过 jquery 功能所做的更改不可用gridview 项的值仍然与以前相同。
在填充/更新方面,我们是否以错误的方式来实现这一点?
顺便说一句:我知道我们可能应该限制网格的边界,但目前这不是一个选项
【问题讨论】:
分页实现了吗?就像对整个性能问题的一个问题。 目前没有分页,不幸的是,用户真正需要一次查看所有数据才能正确了解正在发生的事情的视图 【参考方案1】:我认为问题在于回发时它会从视图状态重新加载数据。我们使用 web 方法将内容加载到 jquery 对话框并通过它进行更新。并在成功保存后更新网格以反映更改。
【讨论】:
【参考方案2】:当您在本地使用 GridView 时,也就是说,您让它处理编辑模板,ViewState 进入场景并正常工作。但是当您手动操作网格时,相关位置不会反映任何更改,因此在服务器上具有相同的值。您说您通过 jQuery 在 dblclick 上获取值。你为什么不更新模糊的行?我的意思是,当用户转到下一行时,只需通过 Ajax 更新当前记录。这是最安全的方法。 曾经我对 Telerik 的 RadTree 有过同样的经历。你应该:
-
使用为您的控件提供的客户端 API,或
不要乱用您的控件的原生方式,同时期望 PostBacks 能够正常工作,或者
仅将控件用于显示目的,但为了进行操作,请使用 AJAX。
【讨论】:
【参考方案3】:我发现此代码“框架”http://www.codeproject.com/KB/ajax/AJAXWasHere-Part1.aspx,它修改/重新创建 ViewState 并使用 AJAX 请求提交它,因此您仍然可以在 ASP.NET 中使用事件模型。这是在 MS 发布 .NET 2.0 之前的 AJAX 解决方案。
我将它与 mootools JS 库结合使用,因此您在使用 JQuery 时应该不会有任何问题,但您将无法使用 JQuery AJAX 方法,除非您将“CallBackObject”重新编写为 Jquery 插件.
问候
【讨论】:
【参考方案4】:如果你想提高性能,你一定不要使用。
-
更新面板
脚本管理器
网格视图
我猜你正在使用所有这些。
您可以Use jQuery to directly call ASP.NET AJAX page methods,根本不使用 ScriptManager。将此与任何 jQuery Grid 建议(here 和 here)的强大功能相结合。我对DataTables 很满意,但我听到越来越多关于SlickGrid 的消息。你应该试一试。
现在一切都在客户端,回发时不会出现价值丢失的问题。
另外,我强烈推荐you should not use UpdatePanel at all。但这只是我。
【讨论】:
以上是关于asp.net webforms ajax 更新gridview的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET WebForm Ajax请求Handler的经验
ajax 在 asp.net webforms 中返回 json 对象的身份验证失败