2008-12-29 66 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