Каков рекомендуемый подход для массовой вставки / обновления в ASP.NET Gridview?

Какую передовую практику или стратегию вы бы использовали для включения массовой вставки / обновления в элементе управления asp.net gridview с включенным разбиением по страницам?

Скажем, например, у вас есть около 10000 записей, и эти данные заполняются при загрузке страницы, и это происходит кусками, скажем, по 100 записей на запрос веб-службы.

Каким подходом вы бы воспользовались, чтобы разрешить редактирование этих строк.

Чтобы привести пример, скажем, объектная модель для вымышленного сценария приведена ниже.

Список клиентов; // список клиентов

customers = ServiceFacade.GetAllCustomers (размер страницы, текущая страница);

Предположим, что вышеупомянутые вызовы службы возвращают 50 записей на основе pageSize, отображающего 10 записей на страницу.

Это будет привязано к gridView, как показано ниже.

gridCustomers.DataSource = клиенты; gridCustomers.DataBind ();

Некоторые моменты, о которых я бы подумал, изложены ниже и требуют участия экспертов ...

  • Отключите viewstate для gridview (так как это снизит производительность страницы).
  • Используйте объект сеанса, чтобы сохранить изменение (ИЛИ что бы вы порекомендовали. Действительно ли здесь полезно двустороннее связывание, я не знаю, поскольку я не пробовал его.)

Мы очень ценим ваши идеи / предложения. Я понимаю, что меня могут за это разозлить, но я думаю, что старый добрый DataSet может быть здесь полезен (поскольку он содержит всю важную информацию, которая позволяет отслеживать изменения и т. Д.).

Ответов (2)

Решение

Взгляните на эту статью о Code Project .

UPDATE:
Я нашел более эффективной реализации одного и того же вида контроля здесь .

Рассматривали ли вы вариант отказа от использования 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>