我有一个网格,由于某些原因我动态添加了一个组合框。我做到了,像魅力一样工作。
我堆栈的下一件事是如何为每个代码设置每行的选择。
例如在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.
}
}
有人能帮助我吗?
答案 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。以与显示方法相同的方式动态添加。