Элементы формы
Есть форма для добавления/редактирования клиента. В шаблоне формы прописаны все поля которые могут на ней быть. Для нового пользователя часть полей показывать не нужно, также не нужно показывать некоторые поля при редактировании пользователя (в зависимости от определенных условий). Подскажите как это можно реализовать? Есть ли какое-нибудь событие отвечающее за то что данные в форму были загружены?
Код формы:
var EditCustomerFormPanel = new DefaultFormPanel({
id: 'EditCustomerFormPanel',
tbar: EditCustomerTB,
title: 'Edit Customer',
reader: new Ext.data.XmlReader({
record: 'item',
success: '@success'
}, ['user_id', 'login', 'parent_id', 'u_password', 'secret_question', 'secret_answer', 'lname', 'fname', 'email', 'address', 'city', 'zip', 'gender', 'state_id', 'pricing_plan_id', 'birthday', 'home_phone', 'cell_phone', 'comments', 'account_status', 'info_match_with_bill_info', 'reseller_name', 'discount', 'domain_prefix', 'group_id']),
region: 'center',
cls: 'bgw br bl bb',
baseCls: 'whitebg',
layout: 'form',
border: false,
labelWidth: 175,
bodyStyle: 'padding:5px 5px 0',
defaults: {
width: 250
},
items: [
{
xtype: 'hidden',
name: 'save_customer',
value: 1
},
{
xtype: 'hidden',
name: 'user_id',
id: 'user_id',
value: 0
},
{
allowBlank: false,
xtype: 'textfield',
fieldLabel: 'Login (*)',
name: 'login'
},
...
{
xtype: 'checkbox',
fieldLabel: 'Send Verification Email',
name: 'send_email',
value: 1,
style: {
display: 'none'
}
},
{
xtype: 'button',
id: 'resend_email',
text: 'Resend Verification Email',
handler: sendVerEmail,
style: {
display: 'none',
marginTop: '20px'
}
}
]
});
|
var myFormPanel = new Ext.form.FormPanel({
title: 'Client and routing info',
items: [{
fieldLabel: 'Client',
name: 'clientName'
}, {
fieldLabel: 'Port of loading',
name: 'portOfLoading'
}, {
fieldLabel: 'Port of discharge',
name: 'portOfDischarge'
}]
});
myFormPanel.getForm().load({
url: '/getRoutingInfo.php',
params: {
consignmentRef: myConsignmentRef
},
success : function(form, action) {
Ext.Msg.alert("Load sucess", action.response.responseText);
},
failure: function(form, action) {
Ext.Msg.alert("Load failed", action.response.errorMessage);
}
});
Проверяй с помощью success и failure |
Цитата:
myFormPanel.items.get(0).hide(); myFormPanel.items.get(0).show(); Где 0 - это порядковый номер в массиве myFormPanel.items |
VKS, спасибо за пример, но как узнать что данные загружены если используется XmlReader ?
|
Разобрался. Нужно так:
EditCustomerFormPanel.on({
actioncomplete: function(form, action) {
if (action.type == 'load') {
//смотрим что пришло и прячем/показываем поля
}
}
});
|
Возник следующий вопрос - как спрятать/показать такое поле:
{
xtype: 'checkbox',
id: 'send_email',
fieldLabel: 'Send Verification Email',
name: 'send_email',
value: 1,
hidden: true
}
если так Ext.getCmp('send_email').hide(); то прячится только чекбокс, а лейба остается |
Разобрался, так:
var send_email_chk = Ext.getCmp('send_email');
send_email_chk.container.up('div.x-form-item').hide();
send_email_chk.hide();
|
| Часовой пояс GMT +3, время: 02:26. |