首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinqDataSource -过滤空值

LinqDataSource -过滤空值
EN

Stack Overflow用户
提问于 2010-08-19 17:16:14
回答 1查看 1.8K关注 0票数 0

我正在编写一个ASP.Net web应用程序。我有一个列表视图,它的数据源是一个LinqDataSource。在我的数据库中,我有一个staff表,我正在尝试使用下拉列表按他们的团队过滤记录。这很好用,直到我在下拉列表中选择了"All“。它返回除teamID为空的员工之外的所有员工。如何返回teamID为空的记录?

这是我的代码:

代码语言:javascript
复制
<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>

在我后面的代码中,我处理LinqDataSource选择事件:

代码语言:javascript
复制
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

我认为如果在dropdownlist为" all“时删除when参数,将强制它返回所有记录,但它不起作用。

请帮帮我!

谢谢,艾玛

EN

回答 1

Stack Overflow用户

发布于 2010-08-19 17:36:14

如果您正在处理selecting事件,我会一起删除数据源中的Where子句,并处理selecting事件中的所有内容,将e.Result值设置为您的linq查询。

然后在您的ddlTeamFilter中,在更改时重新绑定listview。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3520306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档