【问题标题】:ExtJs determine visibility on form loadExtJs 确定表单加载的可见性
【发布时间】:2013-02-27 16:07:47
【问题描述】:

在 Extjs 3.4 中,我有一个相当大的表单,它是通过 someForm.getForm().load({url: someplace, etc}) 的 ajax 调用填充的,它运行良好。不过,我似乎无法解决的问题是,有几个组合框和复选框可以确定另一个字段是否可见以及allowBlank

根据类似问题的答案,我尝试在表单上使用 actioncomplete 事件,但此时字段没有值。我也尝试过使用load() 调用的success 事件,但遇到了同样的问题。

还有其他方法可以从form.load() 调用中获取此功能吗?

编辑 - 这是我的load 电话:

var panel = Ext.getCmp('someFormID');
panel.getForm().load({
    method: 'GET',
    url: 'ajax_get_request.aspx?id=' + id,
    success: function (form) {
        // This will error: object is null or undefined
        alert(form.findField('fieldID').getValue());
    }
});

我对 Extjs 比较陌生,所以也许我只是在这里遗漏了一些东西......

【问题讨论】:

  • 它抱怨哪个对象? form 还是从findField('fieldID')返回?
  • 在我看来,您使用的'fieldID' 可能不正确,因此未找到任何字段。

标签: extjs extjs3


【解决方案1】:

不知道为什么挂钩到Ext.form.BasicForm.load()success 回调对您来说会失败,但我可以提出另一种方法。

我通常使用显式的Ext.Ajax.request() 调用将数据加载到Ext.data.Record。然后在request()success 回调中,我使用Ext.form.BasicForm.loadRecord() 将数据加载到表单中。如果您需要对加载的值采取行动,您可以在同一个回调中执行。

我这样做是因为我喜欢将来自服务器的原始值存储在一边。

【讨论】:

  • 我认为成功回调将是执行此操作的地方,但也许我的代码(请参阅编辑)设置不正确?我之前没有使用过Ext.data.Record,所以我会调查一下。
  • 好吧,我不知道为什么,但切换到使用字段名称而不是 ID 似乎可以正常工作。我真的不知道为什么,除非表单不喜欢在创建时将变量附加到 ID (id: 'somestring' + idVar,)
  • 没错。表单和任何其他 ExtJS 组件都不喜欢这样。 ID 在创建组件时在多个地方使用,之后更改它不会传播此更改。一旦组件启动并运行,最好不要管ids。
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多