ExtJs форма и данные из сервера на ней
Код:
var loginForm = new Ext.FormPanel({ // форма для отчета
frame: true,
id:'db-grid',
disabled: true,
labelAlign: 'top',
bodyStyle:'padding:5px 5px 0',
width: 850,
items: [{
layout:'column',
items:[{ //2
columnWidth:.4,
layout: 'form',
items: [{ //3
xtype:'textfield',
style: 'margin-bottom: (5px,30px,20px,10px)',
fieldLabel: 'Вид ',
name: 'dk',
anchor:'95%'
}] //3
},{
columnWidth:.3,
layout: 'form',
items: [{ //4
xtype:'textfield',
fieldLabel: 'поле1',
name: 'cdplt',
anchor:'95%'
}] //4
},{
columnWidth:.3,
layout: 'form',
items: [{ //4
xtype:'textfield',
fieldLabel: 'поле2',
name: 'cdplt1',
anchor:'95%'
}] //4
}
] //2
}]
,buttons: [{
text: 'Загрузить',
handler: function(){
dataStoreReports.load();
// loginForm.getForm().load({url:'fr.php', waitMsg:'Загрузка...'});
}
}
,{
text: 'Закрыть',
handler: function(){
loginWindow.hide();
}
}]
,keys: [{
key: 27
,fn: function(){
loginWindow.hide();
}
}]
});
/*
* Создаем окно, в которое помещаем форму
*/
var loginWindow = new Ext.Window({
frame:true,
title:'Отчет - Итоги платежей по видам на дату',
width:900,
closable: false,
resizable: true,
collapsible: true, // Можно схлопывать/расхлопывать окно
minimizable: true, // Можно минимизировать окно
maximizable:true, // Можно максимизировать окно
items: loginForm
});
loginForm.getForm().load({url:'data_NLF.php', waitMsg:'Загрузка...'});
loginWindow.show();
};
});
frame: true,
id:'db-grid',
disabled: true,
labelAlign: 'top',
bodyStyle:'padding:5px 5px 0',
width: 850,
items: [{
layout:'column',
items:[{ //2
columnWidth:.4,
layout: 'form',
items: [{ //3
xtype:'textfield',
style: 'margin-bottom: (5px,30px,20px,10px)',
fieldLabel: 'Вид ',
name: 'dk',
anchor:'95%'
}] //3
},{
columnWidth:.3,
layout: 'form',
items: [{ //4
xtype:'textfield',
fieldLabel: 'поле1',
name: 'cdplt',
anchor:'95%'
}] //4
},{
columnWidth:.3,
layout: 'form',
items: [{ //4
xtype:'textfield',
fieldLabel: 'поле2',
name: 'cdplt1',
anchor:'95%'
}] //4
}
] //2
}]
,buttons: [{
text: 'Загрузить',
handler: function(){
dataStoreReports.load();
// loginForm.getForm().load({url:'fr.php', waitMsg:'Загрузка...'});
}
}
,{
text: 'Закрыть',
handler: function(){
loginWindow.hide();
}
}]
,keys: [{
key: 27
,fn: function(){
loginWindow.hide();
}
}]
});
/*
* Создаем окно, в которое помещаем форму
*/
var loginWindow = new Ext.Window({
frame:true,
title:'Отчет - Итоги платежей по видам на дату',
width:900,
closable: false,
resizable: true,
collapsible: true, // Можно схлопывать/расхлопывать окно
minimizable: true, // Можно минимизировать окно
maximizable:true, // Можно максимизировать окно
items: loginForm
});
loginForm.getForm().load({url:'data_NLF.php', waitMsg:'Загрузка...'});
loginWindow.show();
};
});
var values = {
dk : value1,
cdplt: value2,
cdplt1: value3
...
и т.д.
};
потом клади это в форму
loginForm.getForm().setValues(values);
Извините,ничего так и не получилось.Где мне вставить VAR... и в таком виде не получается.Данные из сервера пришли.Но никак не могу в форме их показать.Я отправил кусок скрипта,куда мне добавить ?
Может у Вас есть кусок примера с отображением данных на форме,что из сервера пришли,сбросьте.Я буду благодарен.В примерах документации я нашел только заполнение и отправка на сервер данных.
var dataStoreReports = new Ext.data.Store({ // для отчета
proxy: dataProxyParts
,reader: new Ext.data.JsonReader (
{
root: 'results'
,id: 'prKey'
},
[
,{name: 'DK' ,
,{name: 'CDPLT' , type:'int' }
,{name: 'CDPLT1', type:'int' }
.................
[/PHЯ еще раз скажу,что все данные из сервера пришли,но как их в форму засунуть и показать содержимое заголовков?
через
loginForm.getForm().load({url:'data_NLF.php', waitMsg:'Загрузка...'});
или через
dataStoreReports.load(); ?
для меня было бы проще в обработчике кнопки "Загрузить"
писать что-то такое:
1.получаем данные с сервера в каком-то формате
2. перекладыавем данные в специальный объект у которого поля называются так же как у формы
var values = {
dk : value1,
cdplt: value2,
cdplt1: value3
...
и т.д.
};
3.загружаем этот объект в форму
loginForm.getForm().setValues(values);
PS: чтобы блокировать поля от ввода лучше писать у них в свойствах readOnly :true,
а не делать disabled для всей формы
Код:
Ext.onReady(function() {
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
var dataRecordReports = new Ext.data.Record.create([
{name: prKey}
,{name: 'DK' }
,{name: 'CDPLT' }
,{name: 'CDPLT1'}
]);
var dataReaderReports = new Ext.data.JsonReader({
totalProperty: 'total'
,root: 'results'
,id: prKey
},
dataRecordReports
);
var dataProxyParts = new Ext.data.HttpProxy({
url: 'data_NLF.php',
method: 'POST'
});
var dataStoreReports = new Ext.data.Store({ // для отчета
proxy: dataProxyParts
,reader: new Ext.data.JsonReader (
{
root: 'results'
,id: 'prKey'
},
[
,{name: 'DK' , type:'int' } //отображение содержимого колонок в гриде
,{name: 'CDPLT' , type:'int' }
,{name: 'CDPLT1', type:'int' }
]
)
,baseParams:{task: "report"}
,sortInfo: {field: "DK", direction: "ASC"}
});
newCarForm.render(document.body);
var textdk = new Ext.form.TextArea({
fieldLabel : 'Вид платежа',
name : 'DK'
});
var textcdplt = new Ext.form.TextArea({
fieldLabel : 'за сутки',
name : 'CDPLT'
});
var textcdplt1 = new Ext.form.TextArea({
fieldLabel : 'с начала месяца',
name : 'CDPT1'
});
function getFrm1()
{
/*
* Создаем форму для входа
*/
var loginForm = new Ext.FormPanel({ // форма для отчета
url: 'data_NLF.php',
frame: true,
id:'db-grid',
disabled: true,
labelAlign: 'top',
bodyStyle:'padding:5px 5px 0',
width: 850,
items: [{
layout:'column',
items:[{
columnWidth:.4,
layout: 'form',
items: [
textdk
]
,items:[textdk]
},{
columnWidth:.3,
layout: 'form',
items: [textcdplt]
},{
columnWidth:.3,
layout: 'form',
items:textcdplt1
}
]
}]
,buttons: [{
text: 'Загрузить',
handler: function(){
loginForm.getForm().load({url:'data_NLF.php', waitMsg:'Загрузка...'});
loginForm.getForm().setValues(textdk,textcdplt,textcdplt1);
}
}
,{
text: 'Закрыть',
handler: function(){
loginWindow.hide();
}
}]
,keys: [{
key: 27
,fn: function(){
loginWindow.hide();
}
}]
});
/*
* Создаем окно, в которое помещаем форму
*/
var loginWindow = new Ext.Window({
frame:true,
title:'Отчет - Итоги платежей по видам на дату',
width:900,
closable: false,
resizable: true,
collapsible: true, // Можно схлопывать/расхлопывать окно
minimizable: true, // Можно минимизировать окно
maximizable:true, // Можно максимизировать окно
items: [loginForm]
});
loginWindow.show();
};
});
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
var dataRecordReports = new Ext.data.Record.create([
{name: prKey}
,{name: 'DK' }
,{name: 'CDPLT' }
,{name: 'CDPLT1'}
]);
var dataReaderReports = new Ext.data.JsonReader({
totalProperty: 'total'
,root: 'results'
,id: prKey
},
dataRecordReports
);
var dataProxyParts = new Ext.data.HttpProxy({
url: 'data_NLF.php',
method: 'POST'
});
var dataStoreReports = new Ext.data.Store({ // для отчета
proxy: dataProxyParts
,reader: new Ext.data.JsonReader (
{
root: 'results'
,id: 'prKey'
},
[
,{name: 'DK' , type:'int' } //отображение содержимого колонок в гриде
,{name: 'CDPLT' , type:'int' }
,{name: 'CDPLT1', type:'int' }
]
)
,baseParams:{task: "report"}
,sortInfo: {field: "DK", direction: "ASC"}
});
newCarForm.render(document.body);
var textdk = new Ext.form.TextArea({
fieldLabel : 'Вид платежа',
name : 'DK'
});
var textcdplt = new Ext.form.TextArea({
fieldLabel : 'за сутки',
name : 'CDPLT'
});
var textcdplt1 = new Ext.form.TextArea({
fieldLabel : 'с начала месяца',
name : 'CDPT1'
});
function getFrm1()
{
/*
* Создаем форму для входа
*/
var loginForm = new Ext.FormPanel({ // форма для отчета
url: 'data_NLF.php',
frame: true,
id:'db-grid',
disabled: true,
labelAlign: 'top',
bodyStyle:'padding:5px 5px 0',
width: 850,
items: [{
layout:'column',
items:[{
columnWidth:.4,
layout: 'form',
items: [
textdk
]
,items:[textdk]
},{
columnWidth:.3,
layout: 'form',
items: [textcdplt]
},{
columnWidth:.3,
layout: 'form',
items:textcdplt1
}
]
}]
,buttons: [{
text: 'Загрузить',
handler: function(){
loginForm.getForm().load({url:'data_NLF.php', waitMsg:'Загрузка...'});
loginForm.getForm().setValues(textdk,textcdplt,textcdplt1);
}
}
,{
text: 'Закрыть',
handler: function(){
loginWindow.hide();
}
}]
,keys: [{
key: 27
,fn: function(){
loginWindow.hide();
}
}]
});
/*
* Создаем окно, в которое помещаем форму
*/
var loginWindow = new Ext.Window({
frame:true,
title:'Отчет - Итоги платежей по видам на дату',
width:900,
closable: false,
resizable: true,
collapsible: true, // Можно схлопывать/расхлопывать окно
minimizable: true, // Можно минимизировать окно
maximizable:true, // Можно максимизировать окно
items: [loginForm]
});
loginWindow.show();
};
});
Не могу понять,почему пустая форма.Спасибо за помощь.
Спасибо за ссылку,но я там ,к сожалению,ничего не нашел нового.В Firebug все данные приходят из сервера,но не отображаются.
А такой вопрос:можно ли на форме отобразить все данные из сервера,не одну запись,а много записей.?
из кода нельзя понять почему не работает, потому что нету ответа сервера
я сам не использовал конструкцию .getForm().load...
почему вы не хотите сделать как я предлагаю? - полжить данные с сервера в объект потом
loginForm.getForm().setValues(values);
loginForm.getForm().setValues(textdk,textcdplt,textcdplt1); -не помог тоже.
Как мне объяснили-из сервера на форме можно тольео 1 запись отобразить,а у меня их 880.Я задал вопрос-можно ли на форме их все отобразить,не в гриде?
Єтот отчет работает в php -файле.Не подскажете,как мне в свою форму на extjs подключить этот php-файл,который все уже делает.?
Цитата: moroz11
loginForm.getForm().setValues(textdk,textcdplt,textcdplt1); -не помог тоже.
что значит не помог? выдает ошибку? какую?
вы правильно используете функцию setValues ?http://www.extjs.com/deploy/dev/docs/?class=Ext.form.BasicForm
Цитата: moroz11
Как мне объяснили-из сервера на форме можно тольео 1 запись отобразить,а у меня их 880.Я задал вопрос-можно ли на форме их все отобразить,не в гриде?
-можно все
но я не понимаю, что должно получится - если форма, где 880 записей и 880 одинаковых заголовков, то это уродство
или опишите, что должно получиться
Цитата: moroz11
Єтот отчет работает в php -файле.Не подскажете,как мне в свою форму на extjs подключить этот php-файл,который все уже делает.?
не понимаю и не подскажу)
ЗАГОЛОВОК ОДИН И ПОД КАЖДІМ ИЗ ЗАГОЛОВКОВ (У МЕНЯ ИХ 3) ИДУТ СВЕРХУ ВНИЗ ДАННЫЕ.Ошибку не выдает,но и пусто на форме.
А вообще мне нужен отчет.В гриде он пройдет.Мне надо делать проверку и в зависимости от этого печатать разные столбцы.Запрос сложный.