找回密码
 立即注册

QQ登录

只需一步,快速开始

workaholic
论坛元老   /  发表于:2013-12-22 16:50  /   查看:5515  /  回复:5
C1FlexGrid中绑定数据库后,显示布尔类型的数据时,默认是以复选框的形式显示的,如图;  现在想在加载这一列时用图标来显示,也就是在锁定状态为true时用一种图标显示,为false时用另一种图标显示,请问如何实现?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-12-23 11:11:00
沙发
回复 1楼workaholic的帖子

可以通过 OwnerDrawCell 事件定制:

  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             DataTable dt = new DataTable();
  4.             dt.Columns.Add("col1", typeof(System.Boolean));
  5.             dt.Rows.Add(false);
  6.             dt.Rows.Add(true);
  7.             dt.Rows.Add(false);

  8.             this.c1FlexGrid1.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw;
  9.             this.c1FlexGrid1.OwnerDrawCell += c1FlexGrid1_OwnerDrawCell;

  10.             this.c1FlexGrid1.DataSource = dt;
  11.         }

  12.         void c1FlexGrid1_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
  13.         {
  14.         }
复制代码
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-12-25 22:31:00
板凳
回复 2楼iceman的帖子

试了一下这个方法,不知道为什么加载起来有些慢,请看一下我的代码是否正确
private void FG_project_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
        {
            for (int row = 1; row < FG_project.Rows.Count; row++)
            {
                if (Convert.ToBoolean(FG_project[row, "是否锁定"]) == true)
                {
                    FG_project.SetCellImage(row, 1, Image.FromFile("a.ico"));
                }
                else
                {
                    FG_project.SetCellImage(row, 1, Image.FromFile("b.ico"));
                }
            }
        }

还有就是这两句话是加在绑定数据库之前还是之后呢?
FG_project.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw;
            this.FG_project.OwnerDrawCell += FG_project_OwnerDrawCell;
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-26 10:27:00
地板
回复 3楼workaholic的帖子

我这边测试绑定数据前后设置没有区别。
我的测试代码如下:

  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             DataTable dt = new DataTable();
  4.             dt.Columns.Add("是否锁定", typeof(System.Boolean));
  5.             dt.Rows.Add(false);
  6.             dt.Rows.Add(true);
  7.             dt.Rows.Add(false);

  8.             this.c1FlexGrid1.DataSource = dt;

  9.             this.c1FlexGrid1.DrawMode = C1.Win.C1FlexGrid.DrawModeEnum.OwnerDraw;
  10.             this.c1FlexGrid1.OwnerDrawCell += c1FlexGrid1_OwnerDrawCell;
  11.         }

  12.         void c1FlexGrid1_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
  13.         {
  14.             for (int row = 1; row < c1FlexGrid1.Rows.Count; row++)
  15.             {
  16.                 if (e.Col==1)
  17.                 {
  18.                     if (Convert.ToBoolean(c1FlexGrid1[row, 1]) == true)
  19.                     {
  20.                         e.Image = Image.FromFile("icq.ico");
  21.                     }
  22.                     else
  23.                     {
  24.                         e.Image = Image.FromFile("ai.ico");
  25.                     }
  26.                 }
  27.             }
  28.         }
复制代码
回复 使用道具 举报
workaholic
论坛元老   /  发表于:2013-12-26 20:43:00
5#
回复 4楼iceman的帖子

好的,多谢~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-27 09:21:00
6#
回复 5楼workaholic的帖子

客气,有问题欢迎继续沟通
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部