2008-12-29 61 views
1

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

回答

1

根据我对这样的问题的经验,有时最简单的方法是在后面的代码中动态构建一切。

您从页面上的列表框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; 

     } 
    } 
+0

如果我没有什么隐藏和取消隐藏的列表框的选项? – Xaisoft 2008-12-29 17:19:00