2010-08-19 5 views
0

나는 ASP.Net 웹 응용 프로그램을 작성 중입니다. 내가 listview, 그것의 데이터 소스 LinqDataSource 있습니다. 내 데이터베이스에는 스태프 테이블이 있으며 드롭 다운 목록을 사용하여 해당 팀의 레코드 필터를 사용하려고합니다. 드롭 다운 목록에서 "모두"를 선택할 때까지 제대로 작동합니다. teamID가 null 인 직원을 제외한 모든 직원을 리턴합니다. teamID가 null 인 레코드는 어떻게 반환 할 수 있습니까?LinqDataSource - null 값 필터링

Private Sub ldsStaff_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceSelectEventArgs) Handles ldsStaff.Selecting 
    Dim ddl As DropDownList = CType(ListView1.FindControlRecursive("ddlTeamFilter"), DropDownList) 
    If ddl.SelectedValue = "" Then 
     e.WhereParameters.Remove("TeamID") 
    End If 

나는 내가 whereparameter를 제거하면 드롭 다운리스트가 "모든"이 때 생각 : 나는 LinqDataSource 선택 이벤트를 처리 뒤에 내 코드에서

<asp:ListView ID="ListView1" runat="server" DataSourceID="ldsStaff" DataKeyNames="staffID"> 

    <LayoutTemplate> 
<table> 
    <tr> 
    <th>Name</th> 
    <th>Team</th> 
    </tr> 
    <tr> 
    <td>&nbsp</td> 
    <td><asp:DropDownList ID="ddlTeamFilter" runat="server" DataSourceID="ldsTeams" DataTextField="Team" DataValueField="TeamID" AppendDataBoundItems="true" AutoPostBack="true"> 
     <asp:ListItem Text="[All]" Value=""></asp:ListItem> 
     </asp:DropDownList> 
    </td> 
    </tr> 
    <tr ID="itemPlaceHolder" runat="server"></tr> 
</table> 
</LayoutTemplate> 
.... 
</asp:Listview> 

<asp:LinqDataSource ID="ldsStaff" runat="server" 
    ContextTypeName="ProjectDatabase.ProjectDatabaseUsersDataContext" OrderBy="name" 
    TableName="Staffs" EnableUpdate="True" Where="inService == @inService &amp;&amp; TeamID == @TeamID"> 
    <WhereParameters> 
     <asp:Parameter DefaultValue="true" Name="inService" Type="Boolean" /> 
     <asp:ControlParameter ControlID="ctl00$ContentPlaceHolder1$ListView1$ddlTeamFilter" Name="TeamID" Type="Int32" PropertyName="SelectedValue"/> 
    </WhereParameters> 
</asp:LinqDataSource> 

:

내 코드입니다 모든 레코드를 반환하도록 강요하지만 작동하지 않습니다.

도와주세요!

덕분에, 엠마

답변

0

당신이 선택 이벤트를 처리하는 경우는 어쨌든 나는 모두 함께 당신의 데이터 소스에 Where 절을 제거하고 LINQ 쿼리에 e.Result의 설정 값을 선택 이벤트에서 모든 것을 처리 할 것입니다.

그런 다음 ddlTeamFilter에서 변경시 목록보기를 리 바인드하십시오.

희망이 도움이됩니다.