使两个复选框列表互斥

本文关键字:复选框 列表 两个 | 更新日期: 2023-09-27 18:11:02

朋友们好,

我开始知道如何使两个复选框或复选框列表中的复选框互斥。然而,我的问题与此略有不同,希望从堆栈溢出中得到一些帮助,

嗯,我有两个复选框列表,如下所示,从一个数据集表我得到的复选框值,

CheckBoxlist1 - Checkbox_selectColumns

 if (IsDataSetNotEmpty(ds))
 {
   CheckBox_selectColumns.Items.Clear();
   foreach (DataRow row in ds.Tables[0].Rows)
   {
     CheckBox_selectColumns.Items.Add(row[0].ToString());
   }
 }

CheckBoxlist2 - Checkbox_selectFields

if (IsDataSetNotEmpty(ds))
{
  Checkbox_selectFields.Items.Clear();
  foreach (DataRow row in ds.Tables[1].Rows)
  {
    CheckBox_selectColumns.Items.Add(row[0].ToString());
  }
}

我将在每个列表中得到以下复选框。

Checkbox_selectColumns: Employee ID, First Name, Last Name

Checkbox_selectFields: manager ID, manager FName, manager LName

有没有办法,我可以使这两个复选框互斥,也就是说,如果我从第一个列表中选择任何一个或多个复选框,我不应该从第二个列表中选择任何复选框,反之亦然…

谢谢…

使两个复选框列表互斥

与其循环遍历CheckBox中的项,我建议使用控件的SelectedValue属性,因为它会通过回发持续存在(SelectedIndex不会)。SelectedValue财产):

protected void CheckBox_selectColumns_SelectedIndexChanged(object sender, EventArgs e)         
{             
    if (CheckBox_selectColumns.SelectedValue != "")
    {
        foreach (ListItem listItem in CheckBox_SelectAll.Items)
        {
            listItem.Selected = false;
        }
    }
}
protected void CheckBox_SelectAll_CheckChanged(object sender, EventArgs e)
{
    if (CheckBox_SelectAll.SelectedValue != "")
    {
        foreach (ListItem listItem in CheckBox_selectColumns.Items)
        {
            listItem.Selected = false;
        }
    }
}

嗨,在Tim的建议的帮助下,终于解决了这个问题。如果您有简单的解决方法,请提供。

protected void CheckBox_selectColumns_SelectedIndexChanged(object sender, EventArgs e)
        {
            bool Is_select = false;
            foreach (ListItem listItem in CheckBox_selectColumns.Items) 
            {
                if (listItem.Selected)
                {
                    Is_select = true;
                }
            }
            if (Is_select)
            {
                foreach (ListItem listItem in CheckBox_SelectAll.Items) 
                {
                   if (listItem.Selected)
                   {
                      listItem.slected=false;
                   }
                }
            }
        }

对于第二个Checkbox List执行相反的操作。

        protected void CheckBox_SelectAll_CheckedChanged(object sender, EventArgs e)
        {
           bool Is_select = false;
            foreach (ListItem listItem in CheckBox_SelectAll.Items) 
            {
                if (listItem.Selected)
                {
                    Is_select = true;
                }
            }
            if (Is_select)
            {
                foreach (ListItem listItem in CheckBox_selectColumns.Items) 
                {
                   if (listItem.Selected)
                   {
                      listItem.slected=false;
                   }
                }
            }
        }

这个是正常工作的,任何建议使代码更精细将是非常有帮助的…