如何设置以编程方式添加到网格中的组合框的值

How to set the values of a Combobox which programmatically added in a grid

我有一个网格,由于某些原因我动态添加了一个组合框。我已经做到了,而且工作起来很有魅力。

接下来我要做的是如何为每个代码的每一行设置选择。

例如,在网格的第一行中,我想要的组合框具有值 X,在第二行中,我想要具有值 Y。

    FormGridControl grid = sender.formRun().design(0).controlName('FormGridControl1');
    ColumnTable columnTable;
    ValueTable valueTable;

    while select * from columnTable
    {
        FormComboBoxControl combo1 = grid.addControl(FormControlType::ComboBox,columnTable.Name);
        combo1.label(columnTable.Name);
        combo1.enumType(enumNum(enumValue));;

        combo1.registerOverrideMethod(methodStr(FormComboBoxControl, SelectionChange),'DynamicComboControl_SelectionChanged',this);

        while select * from valueTable
           where valueTable.ColumnName ==  columnTable.Name
        {
           // at this place I have to set the values of the combo1 for each line of the grid separately.
           // and I have not any idea how I can do this.
        }



    }

有人可以帮我吗?

如果您的网格尚未绑定到数据源 然后 table.cell(col,row).data()...

参见 tutorial_Form_Table 表格。

如果您的网格已绑定到数据源 然后在您的 table 和 research() 表单中的数据源中创建并填写记录。


如果您正在寻找 FormComboBoxControl 的方法,请使用 Selection(i) 方法。 https://msdn.microsoft.com/ru-ru/library/aa499256(v=ax.50).aspx

从不使用循环为网格字段赋值。

如果您在网格中的字段中的数据来自数据源的字段,则使用绑定字段(可能由 addDataField 动态创建)。

 fc = grid.addDataField(fbds.id(), fieldNum(MyTable,MyField));

如果您的数据字段可以通过某种方法计算,请添加 display method.
像这样动态添加:

name = tableMethodStr(MyTable,myMethod);
fc = grid.addControl(FormControlType::ComboBox, ds.name()+'_'+name);
fc.dataSource(grid.datasource());
fc.dataMethod(name);

如果您的数据可以编辑,则方法必须是 edit method。与显示方法相同的方式动态添加。