日期:2014-05-18  浏览次数:20485 次

checkboxlist的绑定问题
checkboxlist(简称cbl)我觉得挺难用的,想实现这样的功能:checkboxlist是放在datagird的模板编辑列里面的,当点击编辑的时候,checkboxlist从数据库中的一个字段中读出数据并自动构选选项筐,这个checkboxlist的选项listitem是确定的,我已经在前台页面作了设定,value和呈现字符一样,有5种,这5格数据的构选情况在一个字段中的存储,中间用“,”分割,这样的用法好像cbl的datasouse,datatextfield都用不上了,我试了两种方法,都不行,大家帮忙出出主意:
第一种:静态绑定数据到cbl的每一个listitem中,我写了一个小函数
public bool GetAccouRBool(string AString,string ACurrentstring)
{
  bool returnselect=false;
for (int i=0; i<AccouString.Split(new char[] {','}).Length-1; i++)
{
if (AccouString.Split(new char[] {','})[i].ToString()==AccouCurrentstring)
{
returnselect=true;
}
}
  return returnselect;

}
通过输入字符串和当前listitem的对应value来返回true或false,不过编辑器告诉我listitem不支持databinding。。。。。

第二种方法:在编辑方法中通过findcontrol方法找到cbl,把模板列ItemTemplate中label中的绑定数据与cbl的itemlist作个冒泡比较,对于label中有的数据(同样的,label中的数据用“,”分割)cbl会处于选定状态,系统提示“应用没有设置到实例”,我确定label中的数据已经读出来,但却不能对cbl进行初始化,设定前台的5个listitem的选定状态,对于cbl我如果指定datasouse,和datatext也是告诉我同样出错。请问大家如何解决呢???


------解决方案--------------------
不知道我理解楼主的意思了没有
按楼主第一种方法
不要在你的函数里返回bool值
直接
if (AccouString.Split(new char[] {','})[i].ToString()==AccouCurrentstring) 

cbl.items[i].checked=true;

顺便提一下
楼主for循环中
 i <AccouString.Split(new char[] {','}).Length-1;
不正确
要么 i<=字符串数组.lenth-1; 要么 i<字符串数组.lenth;
------解决方案--------------------
AccountDataGrid.EditItemIndex = e.Item.ItemIndex; 
把这行去掉!

------解决方案--------------------
呵呵 帮楼主顶!
------解决方案--------------------
up