2

您将使用什么最佳实践或策略在启用分页的 asp.net gridview 控件中启用批量插入/更新?

例如,假设您有大约 10000 条记录,并且在页面加载时会填充此数据,这会以每个 Web 服务请求的 100 条记录块的形式发生。

要启用对这些行的编辑,您将采用哪种方法。

仅举一个例子,假设虚拟场景的对象模型如下所示。

列出客户;// 客户列表

客户 = ServiceFacade.GetAllCustomers(pageSize, currentPage);

假设上述服务调用根据每页显示 10 条记录的 pageSize 带回 50 条记录。

这将绑定到 gridView,如下所示。

gridCustomers.DataSource = 客户;gridCustomers.DataBind();

我会想到的一些要点概述如下,需要专家输入...

  • 禁用 gridview 的视图状态(因为这会降低页面的性能)。
  • 使用会话对象来持久化更改(或者你会推荐什么。两种方式绑定在这里真的有用吗,我不知道,因为我没有尝试过。)

非常感谢您的想法/建议。我知道我可能会为此感到愤怒,但我认为好的旧 DataSet 在这里可能很有用(因为它具有能够跟踪更改等的所有基本信息)。

4

2 回答 2

4

看看这篇关于代码项目的文章。

更新: 我在这里
找到了同类控件的更好实现。

于 2009-04-24T11:57:35.500 回答
1

您是否考虑过不使用 ASP.Net GridView 来支持纯粹的客户端网格控件(即 JQuery 插件控件)?我建议您考虑的可能是使用客户端 JSON 或 XML 数据岛作为数据源,以存储用户所做的所有更改,然后一旦他们点击主提交按钮,将此有效负载发送到服务器并处理所有数据库在单个批次或往返中更新。

这样做的缺点是它可能会比 ASP.Net GridView 做更多的工作。此外,您还必须构建/合并一个乐观并发数据模型。完成后,您将拥有一个非常快速且流畅的界面,因为大多数操作将发生在客户端,而无需所有回发。几年前我建造了这样的东西,结果很好。

抱歉,我无法提供更多信息,但下面是它如何工作的一个非常粗略的框架。我希望这有帮助。

<html>
    <head>
        <SCRIPT LANGUAGE="javascript">
        var xmlDomItems;

        function initialize()
        {
            xmlDomItems = document.all("itemsXML").XMLDocument;
            docProds.async = false;
        }

        function ModifyXMLDOM()
        {
          // just work with the xmlDomItems variable just like you would with an .Net XMLDocument Object.
        }

        function SumbitChangePayload()
        {
          // submit xmlDomItems.OuterXML to some AJAX or web service endpoint in an async manner.
        }
        </SCRIPT>
    </head>
    <body onload="initialize()">

        <XML id="itemsXML">
            <Items>
            <%
            // Server side code to render XML inner contents here...

            %>
            </Items>
        </XML>
        <form>
            <!-- build your UI here -->

            <input type="button" onclick="SumbitChangePayload()" value="Submit" />
        </form>
    </body>
</html>
于 2009-02-27T16:49:20.103 回答