2017-03-09 95 views
0

以下是我的CheckBoxList設計代碼。CheckboxList取消選擇問題使用Asp.net C#

<asp:CheckBoxList ID="chklst_assistance_seeking" runat="server" 
AutoPostBack="True" OnSelectedIndexChanged="chklst_assistance_seeking_SelectedIndexChanged" RepeatDirection="Vertical"> 
<asp:ListItem Text="Mentoring" Value="Mentoring"></asp:ListItem> 
<asp:ListItem Text="Seed Funding" Value="Seed Funding"></asp:ListItem> 
<asp:ListItem Text="Assistance in Market Access" Value="Assistance in Market Access"></asp:ListItem> 
<asp:ListItem Text="Help with certification" Value="Help with certification"> </asp:ListItem> 
<asp:ListItem Text="Other" Value="Other"></asp:ListItem> 
</asp:CheckBoxList> 

以下是我的checkboxlist選擇索引更改的代碼。

protected void chklst_assistance_seeking_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string assistance_seeking = ""; 
    Collection<string> items = new Collection<string>(); 
    for (int index = 0; index < chklst_assistance_seeking.Items.Count; index++) 
    { 
     if (chklst_assistance_seeking.Items[index].Selected) 
     { 
      items.Add(chklst_assistance_seeking.Items[index].ToString()); 
     } 
    } 
    assistance_seeking = String.Join(",", items.ToArray()); 

    string[] selectedvalues = assistance_seeking.Split(','); 
    for (int i = 0; i < selectedvalues.Length; i++) 
    { 
     selectedvalues[i] = selectedvalues[i].Trim(); 
     if (selectedvalues[i].ToString() == "Help with certification") 
     { 
     pnl_assistance_seeking_help.Visible = true; 
     } 
     else if (selectedvalues[i].ToString() == "Other") 
     { 
     pnl_assistance_seeking_Other.Visible = true; 
     } 
     else if (selectedvalues[i].ToString() == "Mentoring") 
     { 
      pnl_assistance_seeking_Mentoring.Visible = true; 
     } 
     else 
     { 
      pnl_assistance_seeking_help.Visible = false; 
      pnl_assistance_seeking_Other.Visible = false; 
      pnl_assistance_seeking_Mentoring.Visible = false; 

     } 
    } 

} 

當我選擇CheckBoxList的項目,然後面板是可見的真實正確逐一選擇,但一個,當我去選擇CheckBoxList的項目一個接着後面板不可見假逐個。它可見虛假的所有最後取消選擇。

+0

任何邏輯,請幫助出這一點。 – user6254696

回答

0

面板的可見性在循環內重置爲false,因此每次迭代都可能發生,這似乎是錯誤的。如果有任何if陳述爲真,您也不會重置其他面板的狀態。

我建議以下邏輯:

  • 循環
  • 運行循環
  • 在每次迭代中可能會改變一些面板真實的知名度之前將所有面板的能見度爲false,如果條件滿意

這樣你應該總是有面板可見性對應於複選框的當前狀態。在代碼看起來像這樣:

pnl_assistance_seeking_IIGP_help.Visible = false; 
pnl_assistance_seeking_IIGP_Other.Visible = false; 
pnl_assistance_seeking_IIGP_Mentoring.Visible = false; 

string[] selectedvalues = assistance_seeking_IIGP.Split(','); 
for (int i = 0; i < selectedvalues.Length; i++) 
{ 
    selectedvalues[i] = selectedvalues[i].Trim(); 
    if (selectedvalues[i].ToString() == "Help with certification") 
    { 
    pnl_assistance_seeking_IIGP_help.Visible = true; 
    } 
    else if (selectedvalues[i].ToString() == "Other") 
    { 
    pnl_assistance_seeking_IIGP_Other.Visible = true; 
    } 
    else if (selectedvalues[i].ToString() == "Mentoring") 
    { 
     pnl_assistance_seeking_IIGP_Mentoring.Visible = true; 
    } 
} 
+0

現在面板不可見當我選擇任何複選框列表項時,請檢查。 @Andrei – user6254696