一、需求描述

根据条件判断Checkbox的显示,先上个图,

类似Demo中的这个,因为不能控制文本的显示,所以需对该列的其它事件做些处理,

 二、解决方案

1、添加GridControl上需要的控件

在设计器上添加RepositoryItemCheckEdit、RepositoryItemFontEdit、RepositoryItemMemoEdit 三种字段类型。

再分别给这三个字段添加相应的事件:

RepositoryItemCheckEdit 添加 QueryCheckStateByValue事件;

RepositoryItemFontEdit 添加 CustomDisplayText事件, 设置ReadOnly 为true;

RepositoryItemMemoEdit 使用此控件,主要是用来换行,要保证GridView1.OptionsView.RowAutoHeight = true。

2、设置GridControl 和 GridView

添加事件CustomRowCellEdit。

设置属性OptionsView.ShowGroupPanel = false;OptionsView.ShowIndicator = false;OptionsView.RowAutoHeight = true;

3、相应代码

private void repositoryItemFontEdit1_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
e.DisplayText = string.Empty;
} private void repositoryItemCheckEdit1_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e)
{
string val = "";
if (e.Value != null)
{
val = e.Value.ToString();
}
else
{
val = "False";//默认为选中
}
switch (val)
{
case "True":
e.CheckState = CheckState.Checked;
break;
case "False":
e.CheckState = CheckState.Unchecked;
break;
case "Yes":
goto case "True";
case "No":
goto case "False";
case "":
goto case "True";
case "":
goto case "False";
case "Y":
goto case "True";
case "N":
goto case "False";
default:
e.CheckState = CheckState.Unchecked;
break;
}
e.Handled = true;
} private void gvGridView_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
{
GridView gv = sender as GridView;
string syDesc = gv.GetRowCellValue(e.RowHandle, gv.Columns["FieldValueCol"]).ToString();
switch (e.Column.FieldName)
{
case "FieldName":
if (syDesc == "错误")
e.RepositoryItem = repositoryItemFontEdit1;
else
{
e.RepositoryItem = repositoryItemCheckEdit1;
} break;
}
}

GridControl 控制列中的控件显示的更多相关文章

  1. C#把动态创建的多个控件中指定控件显示在最上层

    在创建多个控件后,有些控件会发生重叠,那么就需要在鼠标按下它时能显示在最上层,下面通过先将按下操作的控件删除然后再重建,就达到让它显示在最上层了 //控件按下 private void picture ...

  2. wpf 获取datagrid 模板列中的控件

    目前采用的 方法  (网上提供的一款) public static DataGridRow GetRow(DataGrid datagrid, int columnIndex)        {    ...

  3. QT中,控件显示不下,用...表示

    void CommonHelper::setQLabelText(QLabel *label, const QString &text) { QFontMetrics cs(label-> ...

  4. EasyUI 中 DataGrid 控件 列 如何绑定对象中的属性

    EasyUI 中 DataGrid 控件 是我们经常用到的控件之一, 但是 DataGrid 控件 在绑定显示列时却不支持对象属性绑定. 模型如下: public class Manager impl ...

  5. GridControl详解(九)表格中的控件

    选择完成控件后,可用+号点开ColumnEdit列,改控件的类型是RepositoryItem类型的,其相应的属性和相应的控件属性是类似的 构建数据如下: DataTable dt = new Dat ...

  6. 利用来JS控制页面控件显示和隐藏有两种方法

    利用来JS控制页面控件显示和隐藏有两种方法,两种方法分别利用HTML的style中的两个属性,两种方法的不同之处在于控件隐藏后是否还在页面上占空位. 方法一:  1 2 document.getEle ...

  7. C# WinForm中 让控件全屏显示的实现代码

    夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...

  8. 在WinForm中使用委托来在其他线程中改变控件的显示

    假设winform中有两个控件: 1.ListView用来显示进度的文本提示,ID:listView_progressInfo 2.ProgressBar用来显示进度,ID:progressBar1 ...

  9. 针对 jQuery Gridly 控件显示多少列的问题。

    针对 jQuery Gridly 控件显示多少列的问题,完全根据 columns 的值来显示. 但是显示columns,并不是给多少值显示几列.到目前还是很模糊的.官方文档没有给出具体的一个解释. $ ...

随机推荐

  1. java基础—GUI编程(二)

    一.事件监听

  2. java基础——随机数问题

    /** * 要求:随机打印50个随机(4-10长度)的字符串,要求字符串包含的范围是所有的英文字母包含大小写和数字, * 按照编码顺序排序,每行打印4个,要求首字符对齐 * @author fanyu ...

  3. Java语言中的异常处理

    Java语言中的异常处理包括声明异常.抛出异常.捕获异常和处理异常四个环节.   throw用于抛出异常.   throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异 ...

  4. python入门:BREAK 的用法 跳当前循环后,不再执行下面代码块

    #!/urs/bin/env python # -*- coding:utf-8 -*- # BREAK 的作用 跳当前循环后,不再执行下面代码块 while True: ') break ') #w ...

  5. Linux 用户管理(二)

    一.groupadd --create a new group 创建新用户 -g  --gid GID 二.groupdel --delete a group 三.passwd --update us ...

  6. poj 3262 牛毁坏花问题 贪心算法

    题意:有n头牛,每头牛回去都需要一定时间,如果呆在原地就会毁坏花朵.问:怎么安排使得毁坏的花朵最少? 思路: 拉走成本最高的. 什么是成本?毁坏花朵的数量. 例如有两种排序   (这里用(a,b)表示 ...

  7. hql的笔记

    删除方法 getSession().delete(arg0); 今天写这个删除语句的时候运用这delete()这个方法,根据id删除记录,hql和普通的sql还是有区别的, 普通的sql封装好了del ...

  8. 1036: [ZJOI2008]树的统计Count(树链剖分)

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 19830  Solved: 8067[Submit ...

  9. poj 3107 Godfather(树的重心)

    Godfather Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7885   Accepted: 2786 Descrip ...

  10. Java中String类通过new创建和直接赋值字符串的区别

    方式一:String a = “aaa” ; 方式二:String b = new String(“aaa”); 两种方式都能创建字符串对象,但方式一要比方式二更优. 因为字符串是保存在常量池中的,而 ...