2010-06-19 5 views
2

LinqDataSource 및 검색 기능을 트리거하는 버튼이있는 ListView 설정이 있습니다. page_load에 데이터가 표시되지 않게하려면 검색 버튼의 Click 이벤트에 ListView의 DataSourceID를 설정하고 바인딩 한 다음 결과 데이터를 LinqDataSource의 Selecting 이벤트에 설정합니다. 예상대로 작동하지만 검색 버튼을 클릭 할 때마다 버튼 Click 이벤트에서 DataSourceId를 설정하는 것이 좋지 않습니다. 어떻게 더 명확하고 명확하게이 작업을 수행 할 수 있습니까?LinqDataSource가있는 ASP.NET ListView에서 검색 버튼을 클릭 할 때 데이터 표시

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 마크 업에서 DataSourceID을 정적으로 설정하는 것이지만 Visible="False"으로 설정하고 버튼을 클릭 한 후에 만 ​​표시되도록 설정할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 그것에 대해서도 생각했지만 문제는 바인딩 할 때 검색 기준없이 페이지로드시 DB에서 데이터를 검색한다는 것입니다. 데이터 소스를 listview에 바인드하고 데이터를 검색하지 않는 방법이 있는지 궁금합니다. –

관련 문제