当前位置: 首页 > 知识库问答 >
问题:

自动填充Combobox ExtJS

房时铭
2023-03-14

我有一些组合框,它们在表单中具有预定义的值。但是,当用户提交表单并且我使用以下方法重置时,它工作正常:

    this.getView().getForm().reset()

这将在大多数区域完美地重置表单,并且组合框将再次用预定义的值重新填充,但是,如果您将值保持在新表单中并再次提交,您将收到一个“无法读取空的属性'0'”错误

我如何预填充值:

       xtype: 'combobox',
        fieldLabel: '<span style="color: red; font-weight: bold;">*</span> <span style="font-weight: bold;">Are there any injuries or Fatalities?<span>',
        id: 'injuriesFatalities',
        labelWidth: 400,
        labelAlign: 'right',
        allowBlank: false,
        displayField: 'name',
        value: 'No',
        store: Ext.create('Ext.data.Store', {
            fields: ['name'],
            data: [{ name: 'No' }, { name: 'Yes' }]
        })

为避免此错误,用户当前需要做的是在组合框中重新选择当前选择的内容。如果我回答了以下问题之一,我觉得我可以避免这个问题:

A) 如何正确设置预定义的组合框值,或

B) 如何正确清除表单而不出现此错误?

提要

目标:

  1. 需要清除表单(表单当前已清除)
  2. 需要预填充组合框的值(表单当前填充可见的组合框)

问题:

-即使在表单重置后combobox选择了值,combobox也不会实际保存正确的值。

抛出错误:

“无法读取null的属性“0”

共有1个答案

陆建木
2023-03-14

组合框配置中缺少valueField配置。此外,还需要在数据中指定指定的valuefield。您始终可以重用相同的字段,但最好将displayField和valueField保留为不同的键,以便轻松识别它们。

下面是一个如何执行此操作的示例:

Ext.application({
    name: 'Fiddle',

    launch: function () {

        var store = Ext.create("Ext.data.Store", {
            fields: ['name', 'age'],
            data: [{
                name: 'Test1',
                age: 22,
                value: 'test1'
            }, {
                name: 'Test2',
                age: 23,
                value: 'test2',
            }, {
                name: 'Test3',
                age: 24,
                value: 'test3'
            }]
        });

        Ext.Viewport.add({
            xtype: 'panel',
            layout: 'fit',
            title: 'Form Exmaple',
            items: [{
                xtype: 'formpanel',
                id: 'formId',
                items: [{
                    xtype: 'combobox',
                    store: store,
                    displayField: 'name',
                    valueField: 'value',
                    value: 'test2'
                }],
                buttons: [{
                    text: 'Reset',
                    handler: function(me) {
                        var form = Ext.getCmp('formId');
                        form.reset();
                    }
                }]
            }]
        });
    }
});

小提琴示例:https://fiddle.sencha.com/#view/editor

 类似资料:
  • 问题内容: 就像是有什么,但对?我要显示的数据是使用的关联。 我已经尝试使用过,但是在这种情况下,我必须在hibernate状态下使用它,这需要我指定using,并且每当我检索到through时,列表中的元素之间都会有空格,具体取决于。 我需要自动填充集合,因为我需要在创建时动态生成。当我使用plain时,得到以下内容: 还有其他解决方案吗? 编辑 我正在尝试实现动态表格 问题答案: 您无法在MV

  • 我在几个表单上遇到了chrome自动填充行为的问题。 表单中的字段都有非常常见和准确的名称,如“email”、“name”或“password”,它们还设置了。 autocomplete标志已成功禁用了autocomplete行为,在该行为中,当您开始键入时会显示下拉值,但没有更改Chrome将字段自动填充为的值。 这个行为是可以的,除非chrome不正确地填充输入,例如用电子邮件地址填充电话输入

  • 问题内容: 我已经看到这个问题在互联网上流传,但是我还没有找到可行的解决方案。基本上,我想加载我的应用程序并按下一个按钮;然后,该按钮操作将在已加载到Web视图中的网站中填写用户名和密码(或等待onPageFinished)。最后,登录页面上的提交按钮将被激活。 据我了解,这可以通过使用loadUrl(javascript)进行Java注入来完成,但是我不知道用Java命令填写字段是什么。对于iO

  • 我看到了关于如何从SMS中检索应用程序密码字段的OTP的IOS12文件API。但我好像找不到另一边的文件...将OTP发送给用户。IOS可以检测到的OTP的标准是什么,供用户自动填充。例如,是否有一个字符限制或某种模式必须遵循。 我指的是这个iOS功能https://9to5mac.com/2018/06/04/safari-security-code-auto-fill/ 具体地说,这个API要

  • 问题内容: 您如何判断浏览器是否自动填充了文本框?尤其是用户名和密码框可自动填充页面加载。 我的第一个问题是页面加载序列何时发生?是在document.ready之前还是之后? 其次,我该如何使用逻辑找出这种情况是否发生?它不是我想阻止这种情况发生,只是挂接到事件中。最好是这样的: 如果可能的话,我希望看到一个jsfiddle显示您的答案。 问题答案: 问题是自动填充由不同的浏览器处理。有些派遣变

  • 嘿,我想做一些计算器,可以用自动填充来计算总价。首先我选择选项选择计划,然后选择计划后将自动生成基本价格,然后我输入折扣值,然后将自动生成总价格(基本价格折扣)。如何在我的代码中实现这一点: 这里是我的HTML: 我的JS: