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

时间:2017-11-17 14:31:52

标签: axapta dynamics-ax-2012 x++

我有一个网格,由于某些原因我动态添加了一个组合框。我做到了,像魅力一样工作。

我堆栈的下一件事是如何为每个代码设置每行的选择。

例如在gird的第一行中,我想要的组合框具有值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.
        }



    }

有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

如果您的网格没有绑定到数据源 那么table.cell(col,row).data()......

请参阅tutorial_Form_Table表单。

如果您的网格绑定到数据源 然后创建并填充表格中的记录,并研究()表格上的数据源。

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

答案 1 :(得分:0)

从不使用循环将值分配给网格字段。

如果网格中字段中的数据来自数据源的字段,则使用绑定字段(可能由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。以与显示方法相同的方式动态添加。