Запрет выбора LinqDataSource на каждом постбеке - PullRequest
2 голосов
/ 07 июля 2011

На странице есть GridView и LinqDataSource, а также несколько кнопок, действия которых не связаны с GridView и его LinqDataSource. Почему на каждой обратной стороне этих кнопок будет вызываться метод выбора источника LinqDataSource? Это нормально?! Эти нежелательные вызовы БД из LinqDataSource не требуются.

Есть ли лучший способ?

Ответы [ 2 ]

4 голосов
/ 07 июля 2011

Вам необходимо отсоединить GridView от источника данных. Я предполагаю, что вы подключили источник данных следующим образом, и в этом случае не делайте так.

<asp:LinqDataSource 
    runat="server"
    ContextTypeName="AdventureWorksDataContext" 
    TableName="Contacts" 
    ID="LinqDataSource1">
</asp:LinqDataSource>

<asp:GridView 
    ID="GridView1" 
    runat="server"
    DataSourceID="LinqDataSource1" >
</asp:GridView>

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

if (dataSourceNeeded == true) {
  GridView1.DataSource = GetDataSource();
  GridView1.DataBind();
}
2 голосов
/ 07 июля 2011

это потому, что сетка должна заполняться при каждой загрузке страницы, вы можете кэшировать данные к некоторой переменной и сохранять их на стороне сервера (не в viewstate)

...