动态添加网格列

Add grid columns dynamically

我创建了一个具有单一数据源的表单:InventJournalTable

我还在上面添加了一个网格和来自数据源的两个字段:JournalTypeJournalId

ActionPane 有一个按钮,在它的点击事件处理程序中,我正在尝试执行以下操作:

1.  add a new data source and join it with the current one on JournalId
2.  add to fields from the newly added data source to the current Grid. 

这是我到目前为止所拥有的...只是为了测试..我已经尝试访问数据源并添加一个范围。效果很好,也许连接也有效,但我如何添加这两个字段?

void clicked()
{
    Query query;
    QueryBuildDataSource qbdsInventJournalTable;
    QueryBuildDataSource qbdsvwInventJournals;

    super();

    query = InventJournalTable_ds.query();
    qbdsInventJournalTable = query.dataSourceTable(tableNum(InventJournalTable));

    qbdsInventJournalTable.addRange(fieldNum(InventJournalTable, JournalType)).value(queryValue(InventJournalType::LossProfit));

    qbdsvwInventJournals = qbdsInventJournalTable.addDataSource(tableNum(vwInventAdjJrnlCostAmount));
    qbdsvwInventJournals.addLink(fieldNum(InventJournalTable, JournalId), fieldNum(vwInventAdjJrnlCostAmount, JournalId));
    qbdsvwInventJournals.joinMode(JoinMode::OuterJoin);

    //gridOverview.addDataField(

    InventJournalTable_ds.executeQuery();
}

还有一件事,我计划添加另一个名为 "Remove details" 的按钮,它将删除第二个数据源并且网格应该 return 到其初始状态。

至少我在正确的轨道上吗?我能得到一些关于这个的提示吗?

您是否考虑过只将它们添加到表单中,而不是动态添加 datasource/fields/etc,但在需要时禁用连接的数据源?在我看来像是一个 simpler/cleaner 解决方案。

看这里: http://olondono.blogspot.com/2008/06/how-to-enable-or-disable-joined.html