2

LinqDataSourceと検索機能をトリガーするボタンを使用してListViewを設定しています。page_loadにデータが表示されないようにするために、検索ボタンのClickイベントでListViewのDataSourceIDを設定し、それをバインドして、LinqDataSourceのSelectingイベントで結果データを設定します。期待どおりに機能しますが、検索ボタンがクリックされるたびにボタンClickイベントにDataSourceIdを設定するのは見栄えがよくありません。どうすればこれをより良く、より明確な方法で行うことができますか?

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;
}
4

1 に答える 1

0

正直なところ、あなたのアプローチに問題はないと思いますが、気に入らない場合は、別のアプローチとして、通常どおりマークアップに を静的に設定DataSourceIDしますが、 を設定し、ボタンがクリックされました。ListViewVisible="False"

于 2010-06-19T05:41:02.240 に答える