2011-05-19 63 views
1

表单加载后会触发哪个事件?我的要求是在视负荷基于一些condation某些控件设置为禁用模式的时间(只读) 所以如何处理这个我(这事件) 试试这个formpanel.on({ actioncomplete: function (form, action) {}但IST没有被解雇提前ExtJS表格加载

感谢

回答

4

我假设你在记录/数据加载到表单后发生事件。行动得到处理在basicForm和电话。内basicFormload()电话doAction()所以你应该能够使用从basicForm

actioncomplete下列事件:(此表格,动作 动作)时的动作是 完成触发。

actionfailed :(形式,动作 action)动作失败时触发。

beforeaction :(形式这,行动 行动)执行任何行动之前触发 。返回false取消 操作。

+0

感谢您的重播,我已经尝试beforeaction但它没有被解雇,而且我已经尝试过这种“Ext.getCmp(” PeopleSearchFormPanel “).getForm()。on({beforeaction:function(a,o){debugger; Ext.getCmp('btaAdd')。disable();}});”,,但它没有被解雇 – MNR 2011-05-19 07:20:12

+0

@MNR必须在你的代码中出现错误...'load()'内部调用'doAction()'并触发'beforeaction'事件... – sra 2011-05-19 08:03:55

5

我今天就这样挣扎着。要记住的重要一点是,没有事件form.loadRecord()被解雇,因为它只是一个setValues()包装。如果您想要在loadRecord()上触发活动,您需要自行定义Ext.form.Basic(并可能将活动添加到中继活动Ext.form.Panel中)。

0

您可以使用Ext.util.Observable.capture观察Observable上的事件。这里是一个被加载,然后提交观察形式的一个例子:

http://jsfiddle.net/el_chief/HBah5/4/

我看到这些事件:

fieldvaliditychange
fielderrorchange
validitychange
dirtychange
beforeaction(我打提交)
afterlayout
actionfailed(它没有提交给ywhere)

不要忘记,BasicForm有它自己的事件(尽管我相信它们都被转发到Form),就像表单中的Fields一样。

更改basic.trackResetOnLoad改变一些事件也一样,尤其是“dirtychange”