2

页面中有一个 GridView 和一个 LinqDataSource,还有几个按钮,它们的操作与 GridView 及其 LinqDataSource 无关。为什么在这些按钮的每个回发时 LinqDataSource 的 Selecting 方法都会调用?这正常吗?!不需要来自 LinqDataSource 的这些不需要的数据库调用。

有没有更好的办法?

4

2 回答 2

4

您需要从数据源中分离 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();
}
于 2011-07-07T03:21:21.080 回答
2

因为网格需要在每次页面加载时填充,您可以将数据源缓存到某个变量并将其存储在服务器端(不在视图状态中)

于 2011-07-07T02:48:37.020 回答