如何从另一个网格的另一个选定记录将数据添加到网格

Posted

技术标签:

【中文标题】如何从另一个网格的另一个选定记录将数据添加到网格【英文标题】:How to add data to the grid from another selected record of another grid 【发布时间】:2011-11-23 09:56:26 【问题描述】:

我正在为我的网格使用 RowEditor 插件。网格记录有三个按钮:选择、更新、取消。当我单击选择时,它将显示另一个网格,用户必须单击一个记录,然后该记录的某些值必须显示在前一个网格上。这该怎么做 ? 我正在使用 extjs 3.0

提前致谢!

【问题讨论】:

【参考方案1】:

当您单击选择时 - 显示带有网格的模式窗口弹出窗口。当您打开该弹出窗口时,将回调传递给弹出窗口的构造函数。然后强制用户在网格中只选择一条记录(使用 rowselectmodel)。在子网格的 itemclick 上 - 调用您的回调并在父网格中传递选定的数据。使用此数据更新父级的网格记录。

希望我是清楚的。

【讨论】:

谢谢你,我只是做了你写的一切,但我需要显示数据(孩子的一些记录到父母)并且该行仍处于可编辑模式,带有三个按钮,当我点击从子网格更新数据将进入数据库。用户可以编辑也可以不编辑剩余的字段。我完成了你所写的所有内容,但我不知道如何将数据从子网格显示到父网格当前行(处于可编辑模式) 你总是可以得到当前编辑的行。使用父网格选择模型,然后您可以更新该行的记录。您还可以在当前打开的 RowEditor 中更新编辑器。处理所有这些时刻可能有点复杂,但它是可行的:)。 你能给我一些示例代码吗?我不知道如何编码。我的电子邮件是:thorusan@gmail.com 谢谢!【参考方案2】:

要确定用户选择了哪一行,请使用 Ext.grid.GridPanel 的 SelectionModel。默认模型是 Ext.grid.RowSelectionModel(使用 selModel 配置设置更改默认值)。要获取选定的行,请致电myGridPanel.getSelectionModel().getSelected()。这将返回一个 Ext.data.Record。挖掘该数据以填充原始网格/存储。

【讨论】:

【参考方案3】:

感谢您的回复。我已经做了必要的事情。 我是怎么做的,只是将编辑器传递给我的函数并使用选择模型,我得到了值并将它们放入编辑器中。

val1 = selectedArray[0].get('val1');
var cm = grid.colModel, fields = editor.items.items, f, val;
f = fields[1];
f.setValue(val1);
editor.values[f.id] = val;

这让我的生活更轻松。

但是,在放入编辑器后,我遇到了另一个问题。如果用户单击更新按钮,我必须在 afteredit 事件中进行验证。在afteredit 事件中,

afteredit: function(object, changes, record, rowIndex)

    // I have to do validation on the changes; but its an object. How will I do it 
    ???

【讨论】:

以上是关于如何从另一个网格的另一个选定记录将数据添加到网格的主要内容,如果未能解决你的问题,请参考以下文章

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

extjs 从第一个网格中选择记录并将所选记录复制到第二个网格

获取选定行的 ExtJS4 可编辑网格返回空

ExtJs双击行并将记录传递到输入字段中的另一个窗口

Extjs mvc 将记录添加到网格面板

kendo 将 HTML 元素绑定到网格选定的行/dataItem