在WinForm平台下,C1FlexGrid可以设置自定义Editor,比如自定义一个ColorPicker等控件放到C1FlexGrid中。

本文就基于这个,介绍添加C1CheckBox作为C1FlexGrid的Editor,并且该列是数据绑定的情况。

首先设置数据源。

数据源里有个Flag字段是String类型,显示Y,N。

 //Create & populate first table
        DataTable table1 = new DataTable();
        table1.TableName = "Author";
        table1.Columns.Add("ID", typeof(Int32));
        table1.Columns.Add("Author", typeof(string));
        table1.Columns.Add("Flag", typeof(string));

        table1.Rows.Add(1, "Robert Ludlum","Y");
        table1.Rows.Add(2, "Frederick Forsyth","N");
        table1.Rows.Add(3, "Dan Brown", "Y");
        table1.Rows.Add(4, "Sir Arthur Conan Doyle", "Y");
        table1.Rows.Add(5, "Mark Twain", "Y");
        table1.Rows.Add(6, "Daniel Defoe", "N");
        table1.Rows.Add(7, "William Shakespeare", "Y");
        table1.Rows.Add(8, "Vikram Seth", "Y");
        table1.Rows.Add(9, "P.G. Wodehouse", "N");
        table1.Rows.Add(10, "Boris Yeltsin", "Y");

 

然后数据绑定设置Editor

设置C1FlexGrid的Editor是C1CheckBox。

 c1CheckBox1.DataSource = table1;
            this.c1FlexGrid1.Cols[3].Editor = c1CheckBox1;

 

接着设置C1CheckBox绑定到字符串

当数据源的数据类型是字符串的时候,使用TranslateValues来指定对应的值。

代码参考:

c1CheckBox1.DataSource = table1;
            c1CheckBox1.DataField = "Flag";
            c1CheckBox1.DataType = typeof(string);

            c1CheckBox1.TranslateValues.Checked = "Y";
            c1CheckBox1.TranslateValues.Unchecked = "N";

 

注意:由于数据绑定的时候Text的显示无法对应,所以通过CheckedChanged事件做了同步。

  void c1CheckBox1_CheckedChanged(object sender, EventArgs e)
        {            
            this.c1CheckBox1.Text = this.c1CheckBox1.Checked ? "Y" : "N";
        }

结果如下:

C1Checkbox

本文的源代码请下载:

更多内容:

C1FlexGrid控件简介: /developer/componentone/flexgrid

C1FlexGrid的下载地址:

/download/?pid=3

如需更多帮助,可以到官方论坛GCDN产品技术社区寻找更多资源以及帮助,地址:http://gcdn.grapecity.com.cn/