阻止LinqDataSource选择每个回发

时间:2011-07-07 02:10:22

标签: c# asp.net linqdatasource

页面中有一个GridView和一个LinqDataSource,几个按钮的动作与GridView及其LinqDataSource无关。为什么在这些按钮的每个回发后,LinqDataSource的选择方法都会调用?这是正常的吗?! 不需要来自LinqDataSource的这些不需要的db调用。

还有更好的方法吗?

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:2)

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