本帖最后由 Richard.Ma 于 2020-9-8 01:19 编辑
Flexgrid中每一列可以设置列数据类型,控件可以根据绑定的数据类型自动设置或者手动设置。对于不同的列类型,都会有对应的列编辑器与之对应
除此之外,Flexgrid也提供了自定义列编辑器的功能,我们可以通过代码来设置列编辑器
- c1FlexGrid1.Cols[1].Editor = new NumericUpDown();
复制代码
上述情况下,一列的所有行都使用的是一种编辑器。但是在某些情况下,我们希望编辑器可以更加灵活,比如根据编辑的单元格值不同,为此单元格设置不同的编辑器,
比如下图的效果,在该列是String的情况下,为数值使用数字编辑器,为文本使用文本编辑器
要实现这个功能,我们可以在BeforeEdit事件中对单元格的值进行判断,然后重新设置编辑器
- private void C1FlexGrid1_BeforeEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
- {
- int intvalue;
- if (e.Col == 1 && int.TryParse(c1FlexGrid1[e.Row, e.Col].ToString(), out intvalue))
- {
- c1FlexGrid1.Cols[1].Editor = new NumericUpDown();
- }
- else
- {
- c1FlexGrid1.Cols[1].Editor = new TextBox();
- }
- }
复制代码
|