2

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

ASP 代码:

<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

老实说,我认为您的方法没有任何问题,但是,如果您不喜欢它,另一种方法是像往常一样DataSourceIDListView标记中静态设置Visible="False"被点击。

于 2010-06-19T05:41:02.240 回答