如何解决DevExpress的RepositoryItemCheckEdit多选框不能多选的问题
答案:2 悬赏:0 手机版
解决时间 2021-02-11 12:46
- 提问者网友:半生酒醒
- 2021-02-11 06:14
如何解决DevExpress的RepositoryItemCheckEdit多选框不能多选的问题
最佳答案
- 五星知识达人网友:笑迎怀羞
- 2021-02-11 07:30
首先repositoryItemCheckEditd列要已经绑定了一个数据列,就是gridview绑定的datatable中有一列是repositoryItemCheckEditd列的数据源,然后将repositoryItemCheckEditd列设置成可编辑 就可以了
全部回答
- 1楼网友:山君与见山
- 2021-02-11 08:15
近日,在研究功能比较强大的.net第三方控件developer express,竟然发现里面的模板列repositoryitemcheckedit默认的状态和单选钮一样,虽然我们有时候也很需要这样的功能,但是有时候我们也要有复选按钮的功能,最头疼的莫过于这个东东的教程,帮助啥的全是英文的。所以在求助网上发现没有满意的答案之后,决心自己狠砸单词,终于黄天不负有心人...我觉得好多人一定也在为这个控件的这个功能而发愁,所以觉得应该写些东西,其实就这个动能也没有什么太神秘,只不过找它的属性方法的 时候比较费时间。
首先,先定义一个新列,是个绑定的列:(拿绑定列为例)
gridview1.columns[10].caption = "新列1";
repositoryitemcheckedit re3 = new repositoryitemcheckedit();
gridview1.columns[10].columnedit = re3;
gridview1.columns[10].visible = true;
re3.querycheckstatebyvalue += new devexpress.xtraeditors.controls.querycheckstatebyvalueeventhandler(re3_querycheckstatebyvalue);//定义这个事件是关键,因为就靠它了
然后就是我们的关键事件里要写的东西了:
void re3_querycheckstatebyvalue(object sender, devexpress.xtraeditors.controls.querycheckstatebyvalueeventargs e)
{
string val = "";
if (e.value != null)
{
val = e.value.tostring();
}
else
{
val = "true";//默认为选中
}
switch (val)
{
case"true":
e.checkstate = checkstate.checked;
break;
case"false":
e.checkstate = checkstate.unchecked;
break;
case"yes":
gotocase"true";
case"no":
gotocase"false";
case"1":
gotocase"true";
case"0":
gotocase"false";
default:
e.checkstate = checkstate.checked;
break;
}
e.handled = true;
}
对于新加的列,研究了半天没有什么可以实现的方法,不过最后通过改变sql语句实现了,不如"select '1' as 新列1 from table1 " 这样不就相当于绑定了嘛,所以说还是可以当绑定列来使用的。
至此,大功完成!就这么简单...有余力的朋友,还可以再看看queryvaluebycheckstate事件,它和我上面提的事件是一对的!呵呵
另外
gridcontrol如果要支持多选,设置options->optionseletion->multiselet为true就ok。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯