В ASP.NET ListView с LinqDataSource отображать данные при нажатии кнопки поиска - PullRequest
2 голосов
/ 19 июня 2010

У меня есть настройка ListView с LinqDataSource и кнопка, которая запускает функцию поиска. Чтобы избежать отображения данных на page_load, я установил DataSourceID ListView в событии Click кнопки поиска, связал его и установил данные результата в событии Select LinqDataSource. Это работает, как я и ожидал, но не очень приятно устанавливать DataSourceId в событии Click кнопки каждый раз, когда нажимается кнопка поиска. Как я могу сделать это лучше и яснее?

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

1 Ответ

0 голосов
/ 19 июня 2010

Честно говоря, я не вижу ничего плохого в вашем подходе, однако, если вам это не нравится, альтернативным подходом было бы просто статически установить DataSourceID в вашей ListView разметке как обычно, но установить Visible="False", и сделать его видимым только после нажатия кнопки.

...