2010-06-19 74 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

相關問題