Каков рекомендуемый подход для массовой вставки / обновления в ASP.NET Gridview? - PullRequest
2 голосов
/ 27 февраля 2009

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

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

Чтобы включить редактирование в этих строках, какой подход вы бы использовали.

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

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

customer = ServiceFacade.GetAllCustomers (размер страницы, currentPage);

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 24 апреля 2009

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

UPDATE:
Я нашел лучшую реализацию того же вида управления здесь .

1 голос
/ 27 февраля 2009

Рассматривали ли вы не использование 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...