基于 extjs 网格中的另一个组合框填充字段

Posted

技术标签:

【中文标题】基于 extjs 网格中的另一个组合框填充字段【英文标题】:Populate Field based on another Combo Box in grid of extjs 【发布时间】:2019-11-08 11:18:59 【问题描述】:

在网格中,我在列字段上有三列有组合框,并且在更改组合框值时自动填充另一列相应的字段如何执行此 extjs

enter image description here

网格代码请参见上图。

我的功能在下面

autoPopulateCsid: function(grid, rowIndex, colIndex, item, e, record, row, action)

/// 我无法获得我正在编辑的整个网格记录/行

我必须在函数中获取记录,这样我才能更新记录字段,它会自动变脏。所以在取消时,我将丢弃我对该行的所有更改

【问题讨论】:

【参考方案1】:

组合框select 事件没有所有这些参数,它实际接收的参数是combobox, newValue, oldValue, eOpts 从那里你可以像这样从你的编辑器组件中获取你的“行记录”。

autoPopulateCsid: function(combobox, newValue, oldValue, eOpts) 
    let myRecord = combobox.up('editor').context.record;
     myRecord.set('collateralAgreement',newValue);


如果您不使用 myRecord.commit(),记录将被标记为脏记录,之后如果您想丢弃这些更改,您可以在网格存储中使用 rejectChanges()

【讨论】:

很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。 如果我更改 myRecord 的值.. 它会如何反映在原始网格中? 编辑了答案来解释这一点,基本上,您需要使用commit()将更改提交到网格的存储 如果我设置 myRecord.set('collat​​eralAgreement',newValue); myRecord.commit();它不会使网格中的字段变脏。如果我更新任何记录,我也希望该字段应该是脏的。 对不起,如果你想记录脏,你不需要使用commit,再次更新答案。

以上是关于基于 extjs 网格中的另一个组合框填充字段的主要内容,如果未能解决你的问题,请参考以下文章

在 extjs 网格中只为一行添加组合框

Extjs - 如何填充组合框形成一个单一的商店?

如何从同一表单中的另一个组合框填充组合框?

如何在 ExtJS 5 中的网格编辑器组合框的当前记录中添加项目

ExtJS 4.1.x - 里面有一个组合框的选择器

网格内的 ExtJS 组合框