页面中有一个 GridView 和一个 LinqDataSource,还有几个按钮,它们的操作与 GridView 及其 LinqDataSource 无关。为什么在这些按钮的每个回发时 LinqDataSource 的 Selecting 方法都会调用?这正常吗?!不需要来自 LinqDataSource 的这些不需要的数据库调用。
有没有更好的办法?
页面中有一个 GridView 和一个 LinqDataSource,还有几个按钮,它们的操作与 GridView 及其 LinqDataSource 无关。为什么在这些按钮的每个回发时 LinqDataSource 的 Selecting 方法都会调用?这正常吗?!不需要来自 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();
}
因为网格需要在每次页面加载时填充,您可以将数据源缓存到某个变量并将其存储在服务器端(不在视图状态中)