使两个复选框列表互斥

时间:2011-10-13 05:51:47

标签: c# asp.net checkbox checkboxlist

好日子朋友,

我知道如何在复选框列表中互相排斥两个复选框或复选框。 但是我的问题与此有点不同,希望从堆栈溢出中获得一些帮助,

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

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:员工ID,名字,姓氏

Checkbox_selectFields:经理ID,经理FName,经理LName

有没有办法,我可以将这两个复选框互相排斥,即如果我从第一个列表中选择任何一个或多个复选框,我不应该从第二个列表中选择任何复选框,反之亦然。

谢谢...

2 个答案:

答案 0 :(得分:1)

我建议使用控件的SelectedValue属性而不是遍历CheckBox中的项目,因为它会通过回发持续存在(SelectedIndex不会)(ListControl.SelectedValue Property) :

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;
        }
    }
}

答案 1 :(得分:0)

嗨,在完成这个问题之后,在蒂姆的提示的帮助下,终于搞定了。如果您有任何简单的解决方案,请提供解决方案。

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;
                   }

                }
            }
        }

这个工作正常,任何使代码更精确的建议都会非常有用......