2010-06-19 75 views
2

我有一个带有LinqDataSource的ListView设置和一个触发搜索功能的按钮。为了避免在page_load上显示数据,我在搜索按钮的Click事件中设置了ListView的DataSourceID,绑定它并在LinqDataSource的Selecting事件中设置结果数据。它按照我的预期工作,但每次单击搜索按钮时都不会在按钮Click事件中设置DataSourceId。我怎样才能以更好,更清晰的方式做到这一点?在ASP.NET ListView和LinqDataSource上,点击搜索按钮时显示数据

ASPX代码:

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="WebApplication1.DataClasses1DataContext" EntityTypeName="" 
    TableName="Persons" onselecting="LinqDataSource1_Selecting"> 
</asp:LinqDataSource> 

<asp:ListView ID="ListView1" runat="server" >...</asp:ListView> 

<asp:Button ID="Search" Text="Search" runat="server" Click="Search_Clicked"/> 

ASPX.CS代码:

protected void Search_Clicked(object sender, EventArgs e) 
{ 
    ListView1.DataSourceID = LinqDataSource1.ID; 
    ListView1.DataBind(); 
} 

protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    //Search Criteria from CheckBoxList and TextBox applied here. 
    DataClasses1DataContext data = new DataClasses1DataContext(); 
    var query = from result in data.Persons 
       where result.ID > 2 
       select result; 
    e.Result = query; 
} 

回答

0

老实说,我看不出什么错你的方法,但是,如果你不喜欢它,一个备用方法是像往常一样静态设置在您的ListView标记中,但设置为Visible="False",并且只有在按钮被点击后才会使其可见。

+0

感谢您的回答,womp。 我也考虑过这个问题,但这样做的问题是当它绑定时,它仍然在页面加载时从数据库检索数据而没有任何搜索条件。我只是想知道是否有任何方法将数据源绑定到列表视图,并且直到专门告诉它才能检索数据。 – 2010-06-19 07:29:54

相关问题