J'écris une application web ASP.Net. J'ai listview, c'est datasource est un LinqDataSource. Dans ma base de données, j'ai une table d'état-major et j'essaie de filtrer les enregistrements par leur équipe en utilisant une liste déroulante. Cela fonctionne bien, jusqu'à ce que je sélectionne "Tous" dans la liste déroulante. Il retourne tout le personnel, sauf ceux où le teamID est nul. Comment puis-je retourner les enregistrements où teamID est nul?LinqDataSource - Filtrage pour les valeurs nulles
Ceci est mon code:
<asp:ListView ID="ListView1" runat="server" DataSourceID="ldsStaff" DataKeyNames="staffID">
<LayoutTemplate>
<table>
<tr>
<th>Name</th>
<th>Team</th>
</tr>
<tr>
<td> </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 && 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>
Dans mon code derrière je gère l'événement de sélection LinqDataSource:
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
Je pensais que si j'ai enlevé le whereparameter lorsque le dropdownlist est "All" il le forcerait à retourner tous les enregistrements, mais cela ne fonctionne pas.
Aidez s'il vous plaît!
Merci, Emma