我有两个网格;我把它们称为子网格和父网格。当我将新行(数据)添加到父网格时,我想重新加载父网格。我试图使用代码中的afteredit函数来编辑它。如果我在警报中取消注释第2行,则可以正常工作。但是在没有警报的情况下,新添加的行将被隐藏。我不明白我的代码出了什么问题。在我将新行添加到网格中以及如何立即重新加载网格后,有人能告诉我该怎么做吗?
这是我的afteredit功能
afteredit : function (roweditor, changes, record, rowIndex)
{ //alert('alert me');
if (!roweditor.initialized) {
roweditor.initFields();
}
var fields = roweditor.items.items;
// Disable key fields if its not a new row
Ext.each(fields, function (field, i) {
field.setReadOnly(false);
field.removeClass('x-item-disabled');
});
this.grid.getSelectionModel().selectRow(0);
this.grid.getView().refresh();
},
xt.ux.grid.woerp =
{
configRowEditor:
{
saveText: "Save",
cancelText: "Cancel",
commitChangesText: WOERP.constants.gridCommitChanges,
errorText: 'Errors',
listeners:
{
beforeedit: WOERP.grid.handler.beforeedit,
validateedit: WOERP.grid.handler.validateedit,
canceledit: WOERP.grid.handler.canceledit,
afteredit: WOERP.grid.handler.afteredit,
aftershow: WOERP.grid.handler.aftershow,
move: WOERP.grid.handler.resize,
hide: function (p)
{
var mainBody = this.grid.getView().mainBody;
if (typeof mainBody != 'undefined')
{
var lastRow = Ext.fly(this.grid.getView().getRow(this.grid.getStore().getCount() - 1));
if (lastRow != null)
{
mainBody.setHeight(lastRow.getBottom() - mainBody.getTop(),
{
callback: function ()
{
mainBody.setHeight('auto');
}
});
}
}
},
afterlayout: WOERP.grid.handler.resize
}
},
答案 0 :(得分:1)
AFAIK RowEditor
是GridPanel
的插件,用于更改来自商店的基础数据。通常,商店也会进行更新。如果您想知道何时保存数据,则应将事件处理程序附加到store。例如:
grid.getStore().on('save', function(){ [...] });
答案 1 :(得分:1)
最后我找到了解决方案。当我将reload函数添加到afteredit方法时,将隐藏新添加的行。所以网格重新加载将数据提交到该数据网格存储后,对我来说效果很好。无论如何,感谢所有试图帮助的人
我的代码看起来像
record.commit();
grid.getView().refresh();
答案 2 :(得分:0)
我认为编辑网格后存在保存按钮。
因此,在保存的handler
中,您可以捕获事件
或使用
Ext.getCmp('your_saveButtonId').on('click', function(component, e) {
// Here they will be checking for modified records and sending them to backend to save.
// So here also you can catch save event
}