2009-02-27 2 views
2

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

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

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

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

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

customers = ServiceFacade.GetAllCustomers (pageSize, currentPage);

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

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

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

Некоторые моменты я бы думать приводится ниже и требует экспертов входов ...

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

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

ответ

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> 
Смежные вопросы