如何设置以编程方式添加到网格中的组合框的值
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。与显示方法相同的方式动态添加。
我有一个网格,由于某些原因我动态添加了一个组合框。我已经做到了,而且工作起来很有魅力。
接下来我要做的是如何为每个代码的每一行设置选择。
例如,在网格的第一行中,我想要的组合框具有值 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。与显示方法相同的方式动态添加。