Richard.Ma 发表于 2020-9-2 15:01:06

在Flexgrid中为一列中的每一行设置不同的编辑器

本帖最后由 Richard.Ma 于 2020-9-8 01:19 编辑

Flexgrid中每一列可以设置列数据类型,控件可以根据绑定的数据类型自动设置或者手动设置。对于不同的列类型,都会有对应的列编辑器与之对应

除此之外,Flexgrid也提供了自定义列编辑器的功能,我们可以通过代码来设置列编辑器
c1FlexGrid1.Cols.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.ToString(), out intvalue))
            {
                c1FlexGrid1.Cols.Editor = new NumericUpDown();
            }
            else
            {
                c1FlexGrid1.Cols.Editor = new TextBox();
            }
      }


页: [1]
查看完整版本: 在Flexgrid中为一列中的每一行设置不同的编辑器