2017-03-09 98 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