如何根据多个列表框和组合有效地过滤列表框?

时间:2008-12-29 16:28:41

标签: c# asp.net

我有一个包含5个列表框的aspx页面。每个列表框都可以过滤另一个列表框,因此如果用户选择列表框1中的项目,则应过滤列表框2,3,4和5。如果用户选择列表框3中的项目,则应过滤列表框1,2,4和5。过滤器可以前进和后退。另一种情况是我在列表框1中选择一个项目,它过滤其他项目,然后我在列表框2中选择一个项目,它进一步过滤列表框1和其他项目,如链式效果。我还必须处理多个选择。这可能会非常混乱,我很好奇是否有人知道处理这个问题的好方法。

1 个答案:

答案 0 :(得分:1)

根据我对此类问题的经验,有时最简单的方法是在代码后面动态构建所有内容。

您从页面上的ListBox 1开始,并根据需要禁用/隐藏其他列表框。然后,您在ListBox 1上处理ItemSelected事件,并将相应的项添加到ListBox 2并启用/取消隐藏它。然后处理ListBox 2上的Item Selected Event,类似的事情是级联更新你的页面/控件。

如有必要,您可以将列表框包装在更新面板中,以便刷新不会影响页面上的其他控件。

伪代码:

aspx:
    <asp:ListBox runat="server" ID="lb1" OnSelectedIndexChanged="OnLB1Change" AutoPostBack="true" >
        <asp:ListItem Text="A" Value="A"></asp:ListItem>
        <asp:ListItem Text="B" Value="B"></asp:ListItem>
    </asp:ListBox>
代码背后的代码:

   protected void OnLB1Change(object sender, EventArgs e)
    {
        int val = ((ListBox)sender).SelectedIndex;

        switch (val)
        {
            case 0:
                //set up LB2 for values A
            break;
            case 1:
               //set up LB2 for values B
            break;

        }
    }