Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / extjs. связанные таблицы. / 25 сообщений из 84, страница 1 из 4
25.10.2012, 01:56
    #38012347
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Здравствуйте! Начал изучать extjs и делать приложение на нём. Подключился к mysql, вывел в grid данные из базы, научил добавлять, изменять, удалять записи. В общем дошел до того момента когда нужно вывести в мою основную таблицу связанные данные из подчиненных таблиц. Объясните кратко, как это лучше всего сделать?
...
Рейтинг: 0 / 0
25.10.2012, 09:29
    #38012434
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Jeka57нужно вывести в мою основную таблицу связанные данные из подчиненных таблиц. Объясните кратко, как это лучше всего сделать?
На серванте
...
Рейтинг: 0 / 0
25.10.2012, 15:11
    #38013215
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_SoftJeka57нужно вывести в мою основную таблицу связанные данные из подчиненных таблиц. Объясните кратко, как это лучше всего сделать?
На серванте
Я в принципе догадывался что запросом их соединять нужно, смотрел на inner join. Но думал что в extjs есть какая-нибудь фича для связей.
С выводом таблицы понятно, а что делать при добавлении записи, когда нужно вывести на место текстового поля выпадающий список с вариантами из другой базы, при выборе которого в основную базу будет отправляться id?
...
Рейтинг: 0 / 0
25.10.2012, 15:33
    #38013271
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Jeka57нужно вывести на место текстового поля выпадающий список с вариантами из другой базы таблицы , при выборе которого в основную базу таблицу будет отправляться id?
Рожается еще один Store, заполняющийся результатом запроса а-ля:
Код: sql
1.
select Id, Description from SmthTable


Затем он подрубается к ComboBox'у. А на уровне grid'а рулите renderer 'ом и editor 'ом
...
Рейтинг: 0 / 0
25.10.2012, 16:38
    #38013425
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
А нет ли примера кода, чтоб понять как это выглядит, а то что-то для меня сложновата документация, или я не понимаю как ей пользоваться...
...
Рейтинг: 0 / 0
25.10.2012, 16:56
    #38013456
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
...
Рейтинг: 0 / 0
25.10.2012, 18:21
    #38013621
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_Soft тынць
Большое спасибо, чувствую себя лузером, даже гуглом не смог воспользоваться =)
...
Рейтинг: 0 / 0
28.10.2012, 21:29
    #38016339
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Появилась проблемка, теперь мне нужно привести всё к нормальному виду. Взял код из примера . Хочу вывести в div мой grid, ставлю в renderto грида id нужного дива, ошибок никаких нет, но грид не отображается. А если поставить рендер в стартовую страницу, т.е. ту которая открывается при загрузке, то он без проблем отображается.
Вообще как лучше и оптимальнее сделать меню, чтобы по кликам открывались нужные странички с гридами и формами?
...
Рейтинг: 0 / 0
29.10.2012, 13:00
    #38016844
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Jeka57ставлю в renderto грида id нужного дива
Код: javascript
1.
2.
3.
...
renderTo: Ext.get("divID")
...


так?
...
Рейтинг: 0 / 0
29.10.2012, 15:32
    #38017196
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_SoftJeka57ставлю в renderto грида id нужного дива
Код: javascript
1.
2.
3.
...
renderTo: Ext.get("divID")
...


так?
у меня было renderTo: ("divID"), но когда поменял ничего не изменилось. Причем если смотреть в консоль разработчика, то грид там как-бы есть.
...
Рейтинг: 0 / 0
29.10.2012, 15:49
    #38017247
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Не надо картинок. Покажите код. Только ж - без фанатизма...
...
Рейтинг: 0 / 0
29.10.2012, 15:59
    #38017279
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_SoftНе надо картинок. Покажите код. Только ж - без фанатизма...
Да я чтобы наглядно...)

Вот viewport и grid
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
    Ext.create('Ext.Viewport', {
        layout: 'border',
        title: 'Ext Layout Browser',
        items: [{
            xtype: 'box',
            id: 'header',
            region: 'north',
            html: '<h1>Учет компьютерной техники_</h1>',
            height: 40
        },{
            layout: 'border',
            id: 'layout-browser',
            region:'west',
            border: false,
            split:true,
            margins: '2 0 5 5',
            width: 275,
            minSize: 100,
            maxSize: 500,
            items: [treePanel, detailsPanel]
        }, 
            contentPanel
        ],
        renderTo: Ext.getBody()
    });
 
var grid = Ext.create('Ext.grid.Panel', {
	title: 'Учет компьтерной техники',
    width: 800,
    columns: gc,

	
  bbar: new Ext.PagingToolbar({   // bbar - нижний тулбар с листалкой
            store: store,               // указано хранилище
            displayInfo: true,          // вывести инфо обо общем числе записей
            displayMsg: 'Показано  {0} - {1} из {2}' // формат инфо
        }),
		
    tbar: [  // верхний тулбар с кнопками удаления и вставки
          {
            text: 'Ins',
            handler: function(){
                // при вставке создается пустая запись в  в хранилище.
                store.insert(0, new User());
                // переход к редактированию новой строки
                Editing.startEdit(0, 0);
            }
        },

          {
            itemId: 'delete', // id кнопки, потом пригодится
            text: 'Del',
            handler: function(){
                // определяем какая строка выделена
                var selection = grid.getView().getSelectionModel().getSelection()[0];
                // удаление строки из хранилища
                if (selection) {store.remove(selection);}
            }
        },
        {
          text: 'Save',
          handler: function(){    // обработчик события нажатия кнопки
            grid.store.sync(); // синхронизация
          }
		  },
		
      ],
		
		selType: 'rowmodel',
    plugins: [
        Ext.create('Ext.grid.plugin.RowEditing', {
            clicksToEdit: 2
        })
    ],
	
    renderTo: Ext.get("computers-details"),
    store: store
}); 



вот панель с контентом

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    var layoutExamples = [];
    Ext.Object.each(getBasicLayouts(), function(name, example) {
        layoutExamples.push(example);
    });
    
	
	    var contentPanel = {
         id: 'content-panel',
         region: 'center', // this is what makes this panel into a region within the containing layout
         layout: 'card',
         margins: '2 5 5 0',
         activeItem: 0,
         border: false,
         items: layoutExamples
    };



и вот что функция возвращает на место items

Код: javascript
1.
2.
3.
4.
5.
6.
7.
        computers: {
            id: 'computers-panel',
            title: 'Компьютерная техника',
            layout: 'fit',
            bodyStyle: 'padding:25px',
            contentEl: 'computers-details',  // pull existing content from the page
			},
...
Рейтинг: 0 / 0
29.10.2012, 16:10
    #38017309
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.Panel-cfg-renderTo Do not use this option if the Component is to be a child item of a Container . It is the responsibility of the Container 's layout manager to render and manage its child items.

Вы просто рожаете грид (без renderTo), а затем контейнер центральной панели должен сказать add() .
...
Рейтинг: 0 / 0
29.10.2012, 16:22
    #38017325
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Ext.onReady(function() {
	var
		vp = Ext.create("Ext.container.Viewport", {
			layout: "border",
			items: [{
				region: "west",
				layout: {
					type: "vbox",
					align: "stretch"
				},
				width: 100,
				items: [{
					xtype: "button",
					text: "Panel1",
					handler: function(btn, e) {
						replaceRegionCenter(btn.text);
					}
				}, {
					xtype: "button",
					text: "Panel2",
					handler: function(btn, e) {
						replaceRegionCenter(btn.text);
					}
				}, {
					xtype: "button",
					text: "Panel3",
					handler: function(btn, e) {
						replaceRegionCenter(btn.text);
					}
				}]
			},{
				region: "center"
			}]
		}),
		replaceRegionCenter = function(text)
		{
			var
				regionCenter = vp.getLayout().centerRegion;

			regionCenter.removeAll();
			regionCenter.add(Ext.create("Ext.panel.Panel", {
				html: text
			}));
		};
});
...
Рейтинг: 0 / 0
29.10.2012, 17:26
    #38017482
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_Soft,

попробовал просто вставить этот код, пишет Uncaught TypeError: Cannot call method 'add' of undefined и ничего не происходит
...
Рейтинг: 0 / 0
29.10.2012, 18:09
    #38017538
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
1. http://jsfiddle.net/Z6Es6/
2. Какая версия Ext'ов?
...
Рейтинг: 0 / 0
29.10.2012, 18:30
    #38017572
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_Soft,

была 4.0.7, обновился, немного пораскинул мозгами и всё заработало =) спасибо, буду смотреть дальше
...
Рейтинг: 0 / 0
29.10.2012, 18:37
    #38017585
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
А как добавить не в центральный контейнер, а в панель в центральном контейнере?
...
Рейтинг: 0 / 0
29.10.2012, 18:43
    #38017599
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Jeka574.0.7
Ха... Для 4.0.7
Код: javascript
1.
2.
3.
...
regionCenter = vp.getLayout().regions.center;
...


Ну, и... Я ж Вам дрозофилу нарисовал... А, по-хорошему, следовало бы шо-то а-ля:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
replaceRegionCenter = function(text)
{
	var
		regionCenter;

	if(regionCenter=vp.getLayout().centerRegion)
	{
		regionCenter.removeAll();
		regionCenter.add(Ext.create("Ext.panel.Panel", {
			html: text
		}));
	}
	else
		throw "karaul!!!";
};
...
Рейтинг: 0 / 0
29.10.2012, 18:46
    #38017605
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Jeka57А как добавить не в центральный контейнер, а в панель в центральном контейнере?
Как-то так:
Код: javascript
1.
2.
3.
smthPanel=vp.getLayout().centerRegion.down("panel");
smthPanel.removeAll(); // по необходимости
smthPanel.add(smthItem);
...
Рейтинг: 0 / 0
29.10.2012, 19:05
    #38017637
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_SoftJeka57А как добавить не в центральный контейнер, а в панель в центральном контейнере?
Как-то так:
Код: javascript
1.
2.
3.
smthPanel=vp.getLayout().centerRegion.down("panel");
smthPanel.removeAll(); // по необходимости
smthPanel.add(smthItem);


Отлично, благодарю
...
Рейтинг: 0 / 0
29.10.2012, 19:26
    #38017673
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
...
Рейтинг: 0 / 0
29.10.2012, 19:59
    #38017702
Jeka57
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
Ex_Soft, простите)
А вот еще вопросик появился, хочу сделать простое меню с помощью treepanel, подключил файл json, набросал структуру. Вот что получилось в json:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
children: [{
    text:'Компьютерная техника',
    expanded: true,
    children:[{
        text:'Компьютеры',
        id:'computers2',
        leaf:true,
		listeners:{
		click: function(){
     		var
			regionCenter = vp.getLayout().centerRegion.down("panel");

			regionCenter.removeAll();
			regionCenter.add(grid)
   }
}
    },{
        text:'Принтеры',
        id:'printers',
        leaf:true
    }]


Но что-то ничего не происходит при клике.
...
Рейтинг: 0 / 0
29.10.2012, 23:23
    #38017836
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
У Ext.data.NodeInterface нЭт события click. Впрочем, как и у Ext.tree.Panel . Юзайте Ext.tree.Panel 'ный itemclick
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.10.2012, 23:51
    #38017848
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
extjs. связанные таблицы.
P.S. BTW,
> подключил файл json, набросал структуру. Вот что получилось в json:
В json'е м.б. только данные, которые читаются reader'ом, который не может от'eval'ить Ваш listener.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / extjs. связанные таблицы. / 25 сообщений из 84, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]