不知道你们有没有遇到过这个问题,在DevExpress gridview中的表头右键菜单里有个列能:
这个特别烦人,因为他可以查看到隐藏的列,并且拖出来,我就想禁掉这个功能,但是又不想禁掉这整个菜单,因为这里的其他功能还是很好用的,我之前写过一个随笔DevExpress gridView列标题右键菜单管理可以解决,但是我又嫌太麻烦,想知道有没有什么属性可以直接让它不出现,不用写事件那么麻烦。
或者让隐藏的列不会被选择出来也行
当然不用写事件了。你这样不看控件的属性,你女朋友造吗?
在Gridview的Optionmenu里面,有个属性叫“EnableColumnMenu”,
好吧,为了负责任,我慎重地打开了我的VS,再看了一下,
如果想要显示ContextMenu,却只是不想要出现Column Chooser,方法是:
在Gridview的OptionCustomization里面,有个属性叫"AllowColumnMoving",
把这个关闭,就不会显示Column Chooser的菜单了。
额...非常感谢你的回答,不过.....这个我试过,但是,我想保留可以移动列的效果,这个还是不符合我的心意
是我漏了说这个,没说清楚,还是很谢谢你的帮助,给你10分
@izan:
看出来你也是个对细节很认真的。
说下我的看法吧,对GridView我有两种区别对待,
1、在查询中的,允许列移动,允许显示隐藏列。
2、在编辑窗口中,作为明细窗口,供用户录入数据的,不允许列移动,不允许隐藏列。
查询中,我从来不用隐藏字段,因为不需要。因为数据绑定,如果需要在点击某行时,根据某个不显示字段的值进行判断或处理的话,我会到对象行里面去判断,而不需要通过GridView的列字段来判断。
而在编辑窗口上,需要一个隐藏字段,用于控制排序。顺便说一下,编辑窗口是强制不让Sorting的。
That is all.
@爱编程的大叔: 这个是没办法的办法,但是在效果上不能满足需求,因为查询出的隐藏列,是给程序员用的,不是给客户看的,所以要彻底隐藏,不允许客户看这个,从客户角度,这是无用信息
@izan:
你要这么说的话,真只能去收购DevExpress公司了。
从我的角度看,这样几个不同角度的自定义差不多够用了。
至于你说的隐藏列给程序员用,我都是用我的解决方案,就是从绑定的对象读取,非常好用,而且从性能上来说(其实不差那几MS)来说,可以少几个column的内存占用,哈哈。
@爱编程的大叔: 不错的想法,谢谢你的意见,想了想,觉得这个控件应该是封装了一个调用绘制菜单控件的方法,要想从属性上去一句话解决估计是不可能了。
@izan:
在数据绑定后,把不要的列删掉。
例如,你有一个列绑定的字段名为 A,在绑定后把该列删掉即可。
TreeListColumn tcA = treeList1.Columns.ColumnByFieldName("A");
if(tcA !=null)
treeList1.Columns.Remove(tcA );
@AlonChan:
GridView.PopupMenuShowing += GridView_PopupMenuShowing;
在这个事件里你可以定制你的菜单,可以添加、删除菜单。
在数据绑定后,把不要的列删掉。
例如,你有一个列绑定的字段名为 A,在绑定后把该列删掉即可。
TreeListColumn tcA = treeList1.Columns.ColumnByFieldName("A");
if(tcA !=null)
treeList1.Columns.Remove(tcA );