ASP.NET Gridview中批量插入/更新的推荐方法是什么?

时间:2009-02-27 16:21:27

标签: asp.net gridview bulkinsert

在启用分页的asp.net gridview控件中,您将使用哪种最佳做法或策略来启用批量插入/更新?

说...你有大约10000条记录,当页面加载时会填充这些数据,这种情况发生在每个网络服务请求100条记录的块中。

要在这些行上启用编辑,您会采用哪种方法。

举一个例子,假设下面给出了虚构场景的对象模型。

列出客户; //客户列表

customers = ServiceFacade.GetAllCustomers(pageSize,currentPage);

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

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

gridCustomers.DataSource = customers; gridCustomers.DataBind();

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

  • 禁用gridview的viewstate(因为这会降低页面的性能)。
  • 使用会话对象来保留更改(或者你会推荐什么。双向绑定在这里真有帮助,我不知道,因为我没有尝试过。)

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

2 个答案:

答案 0 :(得分:4)

看看this article on Code Project

更新: 我发现了同一种控制here的更好实现。

答案 1 :(得分: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>