如何从选定的下拉列表中过滤项目

时间:2017-11-06 11:30:18

标签: c# asp.net

我正在尝试从下拉列表中过滤项目。我在XML表中编写了一个select SQL语句。以下是各自的代码。我的过滤器名称为TreatmentGroup

带有select语句代码的XML表:

<predefined>
    <DetailFilters>
        <FilterInfo Name="CompanyID" DataType="xs:string" Kind="Session"/>
        <FilterInfo Name="BranchID" DataType="xs:string" Kind="Session"/>
        <FilterInfo Name="DepartmentID" DataType="xs:string" Kind="Session"/>
        <FilterInfo Name="MedicalSchemeID" DataType="xs:string" Kind="Form"/>
        <FilterInfo Name="TreatmentGroup" DataType="xs:string" Kind="Form"/>
    </DetailFilters>
    <DetailSelectStatement xsi:type="QLiteralExpr">
      SELECT
      TreatmentItems.TreatmentGroup As TreatmentGroup,
      MedicalSchemeDetail.*
      FROM
      MedicalSchemeDetail JOIN TreatmentItems ON
      MedicalSchemeDetail.CompanyID = TreatmentItems.CompanyID AND 
      MedicalSchemeDetail.BranchID = TreatmentItems.BranchID AND 
      MedicalSchemeDetail.DepartmentID = TreatmentItems.DepartmentID AND
      MedicalSchemeDetail.ItemID = TreatmentItems.TreatmentID 
      WHERE
      TreatmentGroup=@TreatmentGroup
      AND MedicalSchemeDetail.CompanyID = @CompanyID 
      AND MedicalSchemeDetail.BranchID = @BranchID 
      AND MedicalSchemeDetail.DepartmentID = @DepartmentID 
      AND MedicalSchemeDetail.MedicalSchemeID = @MedicalSchemeID 
      AND IsNull(MedicalSchemeDetail.Excluded,0) = 0
    </DetailSelectStatement>
<predefined>

这是带有下拉列表的aspx代码:

<asp:Label runat="server" ID="label" SkinID="groupCaptionSkin" ForeColor="Navy" Font-Names="Tahoma" Font-Size="Small" Text="TreatmentGroup" />   
            <asp:DropDownList ID="ddlItemGroup" OnSelectedIndexChanged= "ddlPeriodStamp_SelectedIndexChanged" runat ="server" AutoPostBack = "True">
                <asp:ListItem Value="" Enabled="false"></asp:ListItem>
                <asp:ListItem Value="ALL">ALL</asp:ListItem>
                <asp:ListItem Value="Lab Test"> Lab Test</asp:ListItem>
                <asp:ListItem Value="RADIOLOGY TEST">RADIOLOGY</asp:ListItem>
                <asp:ListItem Value="NURSING">NURSING</asp:ListItem>
                <asp:ListItem Value="Prescription">Prescription</asp:ListItem>
                <asp:ListItem Value="VACCINES">VACCINES</asp:ListItem>
            </asp:DropDownList>
</asp:Label>

这是过滤器背后的代码:

protected void ddlPeriodStamp_SelectedIndexChanged(object sender, System.EventArgs e)
{       
    DropDownList ddlItemGroup = (DropDownList)sender;

    if (ddlItemGroup.SelectedValue != null)
        ApplyGridFilter();      
}

protected void ApplyGridFilter()
{      
    DBDataSource1.State.BusinessObject.DataPump.FormFilters.Clear();   
    DBDataSource1.State.BusinessObject.DataPump.FormFilters.Add("TreatmentGroup", TreatmentGroup);
    DBDataSource1.State.BusinessObject.Fill(null);
    MedicalSchemeDetailGrid.DataBind();
}

1 个答案:

答案 0 :(得分:0)

在用户选择列表中的项目之后,您的函数ApplyGridFilter被称为。 如果您想在DropDownList的{​​{1}}中对要显示的列表应用过滤器,建议您绑定代码中的PageLoad