飞鹰 发表于 2024-8-18 14:21:55

C1FlexGrid同一列里设置 不同输入格式

我要求是同一列里的不同行进行编辑,必须按照我的要求格式进行输入较验合法性,如第一行我是想输入日期,则可以在这一列里调用日期的输入方式选择日期,第二行我想输入数字,则按数字的输入框进行输入较验,等等更多行的输入都可以按照我的要求格式进入输入,这些行不是固定的,我可以自由增加减少

Richard.Ma 发表于 2024-8-19 09:34:25

grid类组件绑定的数据是行数据,每列应该是对应一个字段属性,因此通常来说应该是一个数据类型,没法满足你说的给每行设置不同的编辑器和校验规则,只能按列设置
            c1FlexGrid2.Cols.Editor = new DateTimePicker();
            c1FlexGrid2.Cols.EditorValidation.Add(new RangeRule() {Maximum=DateTime.Now,Minimum= DateTime.Now.AddDays(-100)});


如果要实现你的需求,推荐使用spread.net 这个控件类似于excel,每个单元格都是独立的,在不绑定数据的情况下,可以给每个单元格单独设置数据校验和编辑器

一路向东 发表于 2024-11-21 21:47:42

在C1FlexGrid的StartEdit事件中,对C1FlexGrid的Editor属性进行赋值。
private TextBox textBox = new TextBox();
private ComboBox comboBox = new ComboBox();
private DateTimePicker dateTimePicker = new DateTimePicker();
private NumericUpDown numericUpDown = new NumericUpDown();

private void c1FlexGrid1_StartEdit(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
{
    switch (e.Row)
    {
      case 1:
            c1FlexGrid1.Editor = comboBox;
            break;
      case 2:
            c1FlexGrid1.Editor = dateTimePicker;
            break;
      case 3:
            c1FlexGrid1.Editor = numericUpDown;
            break;
      default:
            c1FlexGrid1.Editor = textBox;
            break;
    }
}


一路向东 发表于 2024-11-21 21:51:40

一路向东 发表于 2024-11-21 21:47
在C1FlexGrid的StartEdit事件中,对C1FlexGrid的Editor属性进行赋值。

但是,只能做到不同行输入不同格式的数据,而做不到你想输入日期就会显示日期控件,你想输入数字就显示数字控件(还做不到脑机互联)。

Richard.Ma 发表于 2024-11-22 14:53:18

:hjyzw:
页: [1]
查看完整版本: C1FlexGrid同一列里设置 不同输入格式