RepositoryItemCheckedComboBoxEdit如何选择所有的时候只显示"全部"
本帖最后由 rzt_tao 于 2017-7-2 10:59 编辑关于DevExpress的CheckedComboBoxEdit及在GridView上绑定的RepositoryItemCheckedComboBoxEdit如何实现选择所有Item的时候让文本框只显示“全部”或者其他自定义字样问题有时候可能有这种需求,选择了checkedcombobox的所有项后并不想所有项都显示出来,就只是想告诉用户已经选择了所有了,如下图所示
首先说说CheckedComboBoxEdit需要如何操作才能实现这个表现效果:
DevExpress几乎所有下拉控件都提供了CustomDisplayText的这个事件,知道这个事件就好办事了,无疑就是判断值,判断是否为全选就设置一个displayText,
代码如下:
private void checkedComboBoxEdit1_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
var edit = sender as DevExpress.XtraEditors.CheckedComboBoxEdit;
if (edit != null)
{
var checkItems = edit.Properties.Items.GetCheckedValues();//获取选择中的Item值集
if (edit.Properties.Items.Count == checkItems?.Count)//判断选择的Item个数是否所有Item的个数一致
{
e.DisplayText = "全部";
}
}
}
接下来说说RepositoryItemCheckedComboBoxEdit,因为要显示在GridView上,所以要符合GridView的显示规则,单纯的这种做法肯定是满足不了,因为每一行的情况不同,然后组件都是同一个,
这时可能有人会想到利用GridView的CustomRowCellEdit事件通过克隆的方式让该列的每一行都是不同的RepositoryItemCheckedComboBoxEdit这样就每一行就互不影响了,理论上可以这样做,但是不建议,
这个代码就自己实现,这里不提供。比较理想的做法应该是利用GridView的CustomColumnDisplayText事件来控制,代码如下:(评论可查看,乱评论小黑屋伺候)
**** Hidden Message *****
效果图:
如果想选择全部后立即就显示“全部”,而不是焦点离开的时候才显示,操作很简单,再加个repositoryItemComboBoxEdit的CustomDisplayText事件即可:
**** Hidden Message *****
结合这两个事件就可以完美解决这个需求了:
效果图:
好好好的 ! 谢谢分享 感谢楼主分享。 看看实现.. http://pan.baidu.com/s/1kVwsdnh 密码:qfpv 谢谢分享 很实用,谢谢分享~~~~~ 这个也不错,果断收藏了。 学习一下 认真看了你的CODE 学习一下,善于琢磨才是硬道理 刚用到CheckedComboBoxEdit,学习了,谢谢 学习学习 感谢楼主分享。 感谢分享 学习一下,谢谢 想法很好,很实用,赞一下 不错正好用到,不过Select All能不能自定义成中文 赞一个!!! 楼主能发源码给我看么 万分感谢! 邮箱 65644769@qq.com 我收拾收拾 遇到了同样的问题,很有帮助 学习下,能用到 感谢楼主分享。 谢谢核心技术分析 非常感谢 aaaaaaaaaaaaaaaaaa xuexi学习 能绑定主从表中的从表表名吗,然后点击就动态跳转