防止每次回发时选择LinqDataSource

本文关键字:选择 LinqDataSource | 更新日期: 2023-09-27 18:01:18

在一个页面中有一个GridView和一个LinqDataSource,还有一些按钮,它们的动作与GridView和它的LinqDataSource无关。为什么在这些按钮的每次回发时,LinqDataSource的选择方法将调用?这正常吗?!这些不需要的来自LinqDataSource的db调用是不需要的。

有更好的方法吗?

防止每次回发时选择LinqDataSource

您需要从数据源中分离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();
}

因为grid需要在每次页面加载时填充,所以您可以将数据源缓存到某个变量并将其存储在服务器端(而不是在viewstate中)