ExtJS如何将表单值与选定记录进行比较

首先要说我是ExtJS的新手,并花了太多时间试图弄清楚这一小部分。 我正在构建一个小的网格以显示3列,并带有一个用于添加新记录的按钮,一个用于删除所选记录的按钮以及一个用于使用新记录表单更新所选记录的按钮。 现在,我可以使用“新建”和“删除”按钮了。 “更新”按钮将调用该表单并用选定的记录填充它,但是我在表单的提交功能中无法确定当前表单数据是否与选定的记录匹配,从而决定是要更新现有记录还是制作新记录一。这必须基于用户选择的内容,而不是单个列。

这是提交按钮,在这里我很难弄清楚引用它的方式。我已经从stackoverflow和sencha论坛中尝试了许多方法。

pip install mysqlclient

这是调用表单显示的按钮。

buttons: [
        {
            text: 'Submit',handler: function(){

                if ( /* The field values match the selected record */) {
                    //update the existing record

                } else {
                    //Add new record
                    Ext.getcmp('testGrid').store.add(testForm.getvalues());
                }

                Ext.getcmp('testGrid').getView().refresh();
                testForm.hide();
                testForm.reset();
            }
        }
    ]

商店是testStore 网格是testGrid 形式是testForm

我知道这可能很愚蠢,但是我对如何进行此操作感到困惑。任何帮助是极大的赞赏。

bxkanh 回答:ExtJS如何将表单值与选定记录进行比较

您的记录应具有唯一的标识符。 (https://docs.sencha.com/extjs/7.0.0/classic/Ext.data.Model.html) 在Ext.data.Model中搜索属性idProperty。默认标识符为“ id”。 您商店中的每条记录都应具有唯一的ID,可用于检查网格中的记录

  

您的代码已编辑

            buttons: [{
text: 'Submit',handler: function() {
    //get record via form
    //get grid
    if (grid.getStore().findRecord('id',record.get('id'))) {
        //update the existing record

    } else {
        //Add new record
        Ext.getCmp('testGrid').store.add(testForm.getValues());
    }

    Ext.getCmp('testGrid').getView().refresh();
    testForm.hide();
    testForm.reset();
}
  }]

如果您要测试它,我为您创建了一个煎蛋小提琴和一个工作示例。

https://fiddle.sencha.com/#view/editor&fiddle/31fr

希望对您有所帮助!

,

存在几种解决问题的方法。 1)在打开之前添加一些标记。例如-testForm.caseType = 'edit'/'add'或testForm.isEdit = true / false;而且,当您提交表单时,您必须检查if(testForm.caseType == 'edit') { store.findRecord('keyParamName',keyParamValue)并更新/替换它} 2)以其他方式打开表单时,应删除记录,并在提交后始终添加新内容(但在这种情况下,如果不提交就关闭表单,则可能会丢失数据)。 3)如果您将表格作为模式窗口打开-您的网格将保持选中状态,因此您可以在提交获取记录后再次..... getSelection()[0]并对其进行更新。

本文链接:https://www.f2er.com/3033548.html

大家都在问