根据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!!
小弟入门不久,自己琢磨不透,望各位高人赐教!
页面上已经有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!!
小弟入门不久,自己琢磨不透,望各位高人赐教!
------------
sql
if exissts(select sname from tb where sname=str)
return true
else
return false
-------------
checkBox[i].checked = return value
把所有的checkbox和text值存到一个dictionary<Key, Value>中,text做key;
然后遍历List中的值搜索dictionary中的值,然后对Value值做拆箱操作就行了:
(Checkbox)Value
得到结果集合遍历;
this.checkBox+i.checked = true;即可!
这句话能执行不??需不需要定义一下??
或者有其他的什么办法?
->(把查询结果放到一个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;
}
我做的是
MyDB.GetDataSet(select sname from tb );就是返回一个DataSet
然后怎么弄我就不知道了
我现在最大的问题是怎么让26个CheckBox控件循环,我不会
上面的还是看不太明白
查到的数据放在哪里??
Dictionary<Key, Value> checkboxsDic = yyy;
foreach(name in snameList)
{
Checkbox b = (Checkbox)checkboxsDic[name].Value;
b.Checked = True;
}
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)
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处于选中状态