我有一个包含5个列表框的aspx页面。每个列表框都可以过滤另一个列表框,因此如果用户选择列表框1中的项目,则应过滤列表框2,3,4和5。如果用户选择列表框3中的项目,则应过滤列表框1,2,4和5。过滤器可以前进和后退。另一种情况是我在列表框1中选择一个项目,它过滤其他项目,然后我在列表框2中选择一个项目,它进一步过滤列表框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;
}
}