根据select的结果判断checkBox的选中
页面上已经有26个checkBox,分别为checkBox1--checkBox26,checkBox1.text=AA,checkBox2.text=BB,.......checkBox26.text=ZZ
select sname from tb,大概能出来十几条记录,都是AA,BB,.....ZZ之类的;
现在要求如果checkBox[i].text(这样写好象不对,仅作描述用;i(1-26)),
要求如果checkBox[i].text的内容在select sname from tb的结果中,则checkBox[i].checkd=true,否则为false!!
小弟入门不久,自己琢磨不透,望各位高人赐教!

解决方案 »

  1.   

    string str = checkBox[i].text;
    ------------
    sql 
    if exissts(select sname from tb where sname=str)
    return true
    else
    return false
    -------------
    checkBox[i].checked = return value
      

  2.   

    你可以把选出的结果存到List<string>中;
    把所有的checkbox和text值存到一个dictionary<Key, Value>中,text做key;
    然后遍历List中的值搜索dictionary中的值,然后对Value值做拆箱操作就行了:
    (Checkbox)Value
      

  3.   

    select case sname when 'AA' then '1' when 'BB' then '2' .... from tb
    得到结果集合遍历;
    this.checkBox+i.checked = true;即可!
      

  4.   

    this.checkBox+i.checked = true;
    这句话能执行不??需不需要定义一下??
    或者有其他的什么办法?
      

  5.   

    select sname from tb
    ->(把查询结果放到一个List<string>中:
    List<string> snameList = xxx;
    for(int i = 1 ; i <= 26 ; i ++)
    {
            Control control = findControl(this, string.Format("checkBox{0}", i));
            CheckBox cb = (CheckBox) control;
            cb.Checked = snameList.Contains(cb.Text);
    }private Control findControl(Control control,string name)
            {
                foreach (Control ctrl in control.Controls)
                {
                    if (control.Name == name) return control;
                    return findControl(ctrl, name);
                }            return null;
            }
      

  6.   

    我的思路是将查询结果先放到数组中,然后checkBox[i]再循环的和数组里面的对比
    我做的是
     MyDB.GetDataSet(select sname from tb );就是返回一个DataSet
    然后怎么弄我就不知道了
    我现在最大的问题是怎么让26个CheckBox控件循环,我不会
    上面的还是看不太明白
      

  7.   

    你select sname from tb
    查到的数据放在哪里??
      

  8.   

    List<string> snameList = xxx;
    Dictionary<Key, Value> checkboxsDic = yyy;
    foreach(name in snameList)
    {
       Checkbox b = (Checkbox)checkboxsDic[name].Value;
       b.Checked = True;
    }
      

  9.   

    把控件放到List<Checkbox>中就行了,然后用Foreach遍历
      

  10.   

    DataSet -> List<string>:
    List<string> snameList = new List<string>();
    foreach(DataRow row in dataSet.Tables[0].Rows)
    {
        snameList.Add(row["sname"].ToString();
    }我上面用的循环式是在当前窗体上动态查找名称为checkBox1-checkBox26的控件,然后转换成CheckBox,接着对其设置Checked属性的,snameList.Contains(cb.Text) ;-- checkBox1.Text = "AA",snameList如果包含AA,那么checkBox1.Checked = true;不就等价于checkBox1.Checked = snameList.Contains("AA");吗?
    也就相当于checkBox1.Checked = snameList.Contains(checkBox1.Text);
    那么checkBox1是这样,其他的也一样。所以就有了
    checkBoxi.Checked = snameList.Contains(checkBoxi.Text);(i = 1->26)
      

  11.   

    查询到的数据放在DataSet中?一个DataTable.Select就能确定是否有对应的数据,不需要遍历的。
      

  12.   

    xxx,yyy dou 是些啥东西??
      

  13.   

    IList<CheckBox> list=new List<CheckBox>();
    list.Add(this.chk1);
    list.Add(this.chk2);
    ...
    list.Add(this.chk25);
    list.Add(this.chk26);
    //以上部分:把所有CheckBox放入一个List中
    string[] arr=new string[ds.Tables[0].Rows.Count];
    for(int i=0;i<ds.Tables[0].Rows.Count;i++)
    {
    arr[i]=ds.Tables[0].Rows[i].ToString();
    }
    //以上部分:读取数据库字段放入一个数组中for (int i = 0; i < arr.Length; i++)
                {
                    for (int j = 0; j < list.Count; j++)
                    {
                        if (arr[i] == list[j].Text)
                        {
                            list[i].Checked = true;
                        }
                    }
                }
    //遍历数组中的值,如果arr中的值和CheckBox.Text值相等的,CheckBox处于选中状态