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


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


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


так?
у меня было renderTo: ("divID"), но когда поменял ничего не изменилось. Причем если смотреть в консоль разработчика, то грид там как-бы есть.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017247
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо картинок. Покажите код. Только ж - без фанатизма...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017279
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
extjs. связанные таблицы.
    #38017309
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
extjs. связанные таблицы.
    #38017325
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
extjs. связанные таблицы.
    #38017482
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft,

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

была 4.0.7, обновился, немного пораскинул мозгами и всё заработало =) спасибо, буду смотреть дальше
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017585
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как добавить не в центральный контейнер, а в панель в центральном контейнере?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017599
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
extjs. связанные таблицы.
    #38017605
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57А как добавить не в центральный контейнер, а в панель в центральном контейнере?
Как-то так:
Код: javascript
1.
2.
3.
smthPanel=vp.getLayout().centerRegion.down("panel");
smthPanel.removeAll(); // по необходимости
smthPanel.add(smthItem);
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017637
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftJeka57А как добавить не в центральный контейнер, а в панель в центральном контейнере?
Как-то так:
Код: javascript
1.
2.
3.
smthPanel=vp.getLayout().centerRegion.down("panel");
smthPanel.removeAll(); // по необходимости
smthPanel.add(smthItem);


Отлично, благодарю
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017673
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017702
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
extjs. связанные таблицы.
    #38017836
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У 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
extjs. связанные таблицы.
    #38017848
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. BTW,
> подключил файл json, набросал структуру. Вот что получилось в json:
В json'е м.б. только данные, которые читаются reader'ом, который не может от'eval'ить Ваш listener.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38017911
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, ступил.
Сделал вот так:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    var treePanel = Ext.create('Ext.tree.Panel', {
        id: 'tree-panel',
        title: 'Навигация',
        region:'north',
        split: true,
        height: 360,
        minSize: 150,
        rootVisible: false,
        autoScroll: true,
        store: store,
		listeners: {
		itemclick : function(view,rec,item,index,eventObj) {
		

    if(rec.get('id')=='computers') {
		    		
			var regionCenter = vp.getLayout().centerRegion;
			
			regionCenter.removeAll();
			regionCenter.add(grid)
    }


При клике появляется грид справа. Но я теперь не понимаю как мне быть, если нужно прорисовать к примеру две панели и в них добавить по гриду? Как не пробовал - не получается.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38018275
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регионы представляют собой Ext.panel.Panel со всеми вытекающими ...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38018686
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось вот что:
Код: 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.
regionCenter.add(
	Ext.create('Ext.panel.Panel', {
    title: 'Компьютеры',
    width: 600,
    height: 500,
    layout: {
        type: 'vbox',       // Arrange child items vertically
        align: 'stretch',    // Each takes up full width
        padding: 5
    },
    items: [{               // Results grid specified as a config object with an xtype of 'grid'
        xtype: 'grid',
        columns: gc,            // One header just for show. There's no data,
        store: store, // A dummy empty data store
        flex: 1,                                       // Use 1/3 of Container's height (hint to Box layout)
		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
        })
    ]
	//end grid


Перестали кнопки работать, т.к. если я оставлю как было
Код: javascript
1.
2.
regionCenter.add(
	var grid = Ext.create('Ext.panel.Panel', {

то ничего не загружается и в консоли ошибка Unexpected identifier
Чувствую, совсем тупой вопрос, но как заставить кнопки снова работать?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38018852
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Задлянафига Вы в Panel Grid засунули ( Reduce container nesting )?
2. Jeka57
Код: javascript
1.
2.
regionCenter.add(
	var grid = Ext.create('Ext.panel.Panel', {


3. Jeka57ничего не загружается и в консоли ошибка Unexpected identifier
Чувствую, совсем тупой вопрос, но как заставить кнопки снова работать?
Ну, а рядом с консолью - ЭстЪ TAB Script/Sources. Заходим туда, ставим breakpoint на обработчик itemclick и вперьодЪ!

P.S. И замените TAB'ы на пробелы в Вашем редакторе, pls...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019187
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.Так оно было в примере в документации, я подругому не знаю как мне в панели гриды засунуть.
2.Я же говорю, если добавить var перед ext.create внутри regionCenter.add(), то ничего не загружается вообще и на этой строке появляется ошибка Unexpected identifier.
3.Дело в том, что это вопрос, вытекающий из второго, если не определена переменная grid, то в кнопках перестает работать определение выделенной строки: var selection = grid.getView().getSelectionModel().getSelection()[0]; Поэтому я и спрашиваю как их починить...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019349
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос в том, как забрать у xtype grid выделенную строку?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019428
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> в панели гриды засунуть.
Ex_Soft Reduce container nesting

> если добавить var перед ext.create внутри regionCenter.add()
/me вспоминает: АБС...большая машина "воин-купол" пришла в движение от пальца в отверстии пятом и от пальца в отверстии сорок седьмом, и движение было неодолимое, быстрое и прямое...

> если не определена переменная grid
> Вопрос в том, как забрать у xtype grid выделенную строку?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
regionCenter.add(Ext.create('Ext.grid.Panel', {
     store: store,
     columns: gc,
     tbar: [{
         text: 'Del',
         handler: function(btn, e) {
             var
                 grid;

             if(grid=btn.up("grid"))
                 grid.getStore().remove(grid.getSelectionModel().getSelected());
         }
     }]
}));


_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019458
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, с горем пополам разобрался со всем.
Теперь еще проблема появилась. Возвращаясь к combobox в grid'e.
Нашел пример, вот код columns с комбобоксом:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
{ dataIndex: 'department', header: 'Department' , editor: {
                xtype: 'combobox',
                store: storecombo,
                displayField: 'department',
                valueField: 'id'
            },
            renderer: function(val){
                index = storecombo.findExact('id',val); 
                if (index != -1){
                    rs = storecombo.getAt(index).data; 
                    return rs.display; 
                }
            }}


Данные в комбобокс загружаются, в таблицу сохраняются id, всё как положено. А вот в grid поля пустые.
Я так понимаю что-то не так в renderer?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019470
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
renderer:function(value, metaData, record, rowIndex, colIndex, store, view) {
     var
         rec;

     return (rec=storecombo.getById(value)) ? rec.get("department") : "!storecombo.getById(value)";
}


_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019475
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, огромнейшее спасибо!
Еще не подскажите как добавить фильтры по каждому полю? Искал, так и не нашел нормальных объяснений. Чтобы сверху или снизу грида добавились текстовые поля и по ним можно фильтровать данные.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019479
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Еще не подскажите как добавить фильтры по каждому полю?
Штатно такое, типо, не предусматривается. Тут нужно брать в руки напильник. А из готового - попробуйте Ext.ux.grid.FiltersFeature ... Мо подойдет/понравится...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019491
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе подходит, всё работает, но я так понимаю это фильтрация только тех данных, которые загружены в store?
Я посмотрел php код здесь , но так и не понял как мне его добавить к своему
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?php
require 'connect.php';

    $result=mysql_query ("SELECT * FROM pc") or die (mysql_error ());    
    
    $data = array();
    
    while ($row=mysql_fetch_object($result))
    {
        $data [] = $row;
    }
	echo json_encode($data);

?>
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019717
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57я так понимаю это фильтрация только тех данных, которые загружены в store?
Да. Для фильтрации на серванте нужно установить Ext.data.Store.remoteFilter в true, Ext.ux.grid.FiltersFeature.local в false (хотя оно и так по default'у). Теперь фильтр будет передаваться на сервант в формате , зависящем от Ext.ux.grid.FiltersFeature.encode . Далее поступаем по правилу великого чешского ученого Буравчика
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38019734
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Поискав grid+header+filter надыбал Ext.ux.grid.GridHeaderFilters ( Ext.ux.grid.GridHeaderFilters ) Сам его не юзал, но, судя по дате последней версии: Version 0.2.0 - 05/03/12, - типо живет и развивается/поддерживается. Можете покрутить еще и его...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38020902
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вроде и того стандартного функционала достаточно.
Поставил local: false, никаких запросов не делается. Может не надо Буравчика, поможете немного со скриптом на сервере?))
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38020918
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> никаких запросов не делается
Непорядок. 100%-но? Что в Console/Net? Покажите Store/Grid (только без listener'ов/dockedItem'ов/tbar'ов etc.)

> поможете немного со скриптом на сервере?))
Я на пыхе только хеловордил... По этому вопросу Вам лучче сюда
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38020936
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftНепорядок. 100%-но? Что в Console/Net? Покажите Store/Grid (только без listener'ов/dockedItem'ов/tbar'ов etc.)

store
Код: 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.
var store = Ext.create('Ext.data.JsonStore', {
    pageSize: 25,
    model: 'pc',
    
	autoLoad: false,
    autoSync: false,
	
    proxy: {
        type: 'ajax',
        api:{
            create:'php/create.php',
            read:'php/get.php',
            update:'php/upd.php',
            destroy:'php/del.php'
            },
    reader: {
        type: 'json',
		root: 'data'
		}
                
            }

});
...



в grid
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
columns: gc,           
store: store, 
features: [filtersCfg],
emptyText: 'No Matching Records',
selType: 'rowmodel',
    plugins: [
        Ext.create('Ext.grid.plugin.RowEditing', {
            clicksToEdit: 2
        })
    ]
...



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
var filtersCfg = {
    ftype: 'filters',
	encode: true,
    autoReload: false, //don't reload automatically
    local: true, //only filter locally
    // filters may be configured through the plugin,
    // or in the column definition within the headers configuration
    filters: [{
        type: 'numeric',
        dataIndex: 'id'
    }, {
        type: 'string',
        dataIndex: 'name'
    }, {
        type: 'numeric',
        dataIndex: 'cost'
    }, {
        type: 'string',
        dataIndex: 'department'
    }]
};



Пытаюсь отфильтровать записи, в консоли только два GET запроса для treepanel и собственно grid'a которые при загрузке страницы появляются и тишина.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38021552
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57в консоли только два GET запроса для treepanel и собственно grid'a которые при загрузке страницы появляются и тишина.
Ну, дык, у Вас же
Jeka57
Код: javascript
1.
2.
3.
4.
5.
6.
var filtersCfg = {
...
    autoReload: false, //don't reload automatically
    local: true, //only filter locally
...
};


Вот Вам дрозофила:
Код: 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.
79.
80.
81.
82.
Ext.Loader.setPath("Ext.ux", "ext4.1.1/examples/ux");

Ext.Loader.setConfig({
    enabled: true,
    disableCaching: false
});

Ext.require([
    "Ext.ux.grid.FiltersFeature"
]);

Ext.define("TestModel", {
    extend: "Ext.data.Model",
    idProperty: "id",
    fields: [
        { name: "id", type: "int" },
        { name: "fstring", type: "string" },
        { name: "ffloat", type: "float" },
        { name: "fdate", type: "date", dateFormat: "MS" },
        { name: "fboolean", type: "boolean" },
        { name: "fint", type: "int" }
    ]
});

Ext.define("ListModel", {
    extend: "Ext.data.Model",
    idProperty: "id",
    fields: [
        { name: "id", type: "int" },
        { name: "fstring", type: "string" }
    ]
});

Ext.onReady(function () {
    Ext.QuickTips.init();

    var 
        list = [
            [1, "Record# 1"],
            [2, "Record# 2"],
            [3, "Record# 3"]
        ],
        storeList = Ext.create("Ext.data.ArrayStore", {
            model: "ListModel",
            data: list
        }),
        listRenderer = function (value, metaData, record, rowIndex, colIndex, store, view) {
            var 
                listRecord;

            return (listRecord = storeList.getById(value)) ? listRecord.get("fstring") : "!storeList.getById(name)";
        };

    Ext.create("Ext.grid.Panel", {
        title: "Ext.grid.Panel with Ext.ux.grid.FiltersFeature",
        store: Ext.create("Ext.data.JsonStore", {
            model: "TestModel",
            //remoteFilter: true, // работает и без этого
            autoLoad: true,
            proxy: {
                type: "ajax",
                url: "data.aspx",
                reader: {
                    root: "data"
                }
            }
        }),
        columns: [
            { dataIndex: "id", header: "id", filterable: true },
            { dataIndex: "fstring", header: "fstring", filterable: true, flex: 1 },
            { dataIndex: "ffloat", header: "ffloat", filterable: true },
            { dataIndex: "fdate", header: "fdate", renderer: Ext.util.Format.dateRenderer("d.m.Y"), filter: { type: "date", dateFormat: "d.m.Y", afterText: "afterText", beforeText: "beforeText", onText: "onText"} },
            { dataIndex: "fboolean", header: "fboolean", filterable: true },
            { dataIndex: "fint", header: "fint", renderer: listRenderer, filter: { type: "list", dataIndex: "fint", options: list} }
        ],
        features: [{
            ftype: "filters",
            encode: true,
            local: false
        }],
        renderTo: Ext.getBody()
    });


Разбирайтесь...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38022108
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот спасибо, local у меня в false стоял когда пробовал. autoReload: true помог, теперь запросы ломятся, жаль, в соседней ветке по php никто не хочет помочь со скриптом :(
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38022120
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57php
см. ExtJS\examples\grid-filtering\grid-filter.php
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38022153
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я смотрел, но в php тоже только хелловорлдил. Там идет выборка не из mysql базы как у меня, поэтому я не понимаю как ему подсунуть мою базу.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38022674
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вот такие колонки, первая рендерит комбобокс, а вторая при наведении показывает подсказку. Как соединить две функции, чтобы первая колонка рендерила боки и показывала подсказку при наведении?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	{ dataIndex: 'local', header: 'ЛВС' , width: 50, editor: {
                xtype: 'combobox',
                store: storeAnswers,
                displayField: 'answer',
                valueField: 'id'
            },
     renderer:function(value, metaData, record, rowIndex, colIndex, store, view) {
     var rec;
     return (rec=storeAnswers.getById(value)) ? rec.get("answer") : "!storeAnswers.getById(value)";
}},
	{ dataIndex: 'comments', header: 'Comments' , width: 180, editor: 'textfield' , renderer: function (value, meta, record) {
                    var max = 15;
                    meta.tdAttr = 'data-qtip="' + value + '"';
                    return value.length < max ? value : value.substring(0, max - 3) + '...';
                }}
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38023087
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57Как соединить две функции, чтобы первая колонка рендерила боки и показывала подсказку при наведении?
Ниче не понял. Кто такие "боки"? Где д.б. подсказка? В первой колонке или во второй? Или Вы хотите одну унифицированную функцию рендеринга на две колонки а-ля:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function megaRenderer(value, metaData, record, rowIndex, colIndex, store, view) {
    var
        rec,
        result = value;

    switch(colIndex)
    {
         case 1:
         {
               result = (rec=storeAnswers.getById(value)) ? rec.get("answer") : Ext.String.format("!storeAnswers.getById(\"{0}\")", value);
               break;
         }
         case 2:
         {
               meta.tdAttr = 'data-qtip="' + value + '"';
               result = Ext.String.ellipsis(value, 15);
               break;
         }
    }

    return result;
}


???

P.S. Jeka57 в соседней ветке по php никто не хочет помочь со скриптом :(
Ну кто же так задает вопросы? Вот Вы бы сами ответили на вопрос, сформулированный в стиле а-ля: "Вот мне надо реализовать какую-то хренотень, вот вам огрызок кода и сцылко на доку - разберитесь и доложите"? Почитайте на сон грядущий...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38023911
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело было ближе к утру, уже плохо соображал.
У меня есть колонка ЛВС - в ней combobox, который подтягивает данные из store, + к этому в ячейке рендерится нормальное значение из стора, т.е. id меняется на слово.
Также есть колонка Comments - в ней простое значение из стора, а в рендере стоит всплывающая подсказка при наведении курсора.
Так вот, и в той и в другой колонке в рендере указана функция. Мне нужно соединить эти две функции, чтобы, к примеру, в колонке ЛВС помимо замены id на нормальную запись появилась всплывающая подсказка при наведении. Вот, вроде подробно объяснил.

А со скриптом php я вроде разобрался сам =)
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38024179
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Так вот, и в той и в другой колонке в рендере указана функция. Мне нужно соединить эти две функции
Ну так эта функция Вас удовлетворяет
?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38024207
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, она не работает почему-то
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38024222
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> она не работает почему-то
/me вспоминает
Скажите, Вы инженер или домохозяйка? Можете четко, ясно и однозначно изъясняться? Что значит "не работает"? Что в Error Console/Console? Вызывается? Покажите ее реализацию в Вашем исполнении. Что из Вас все клещами приходится-то вытаскивать? В конце концов - это ж Вам надо и у Вас не работает...

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38024239
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, :D
Я написал почему-то не работает, т.к. в консоли тишина. А сделал так:
Код: 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.
	{ dataIndex: 'local', header: 'ЛВС' , width: 50, editor: {
                xtype: 'combobox',
                store: storeAnswers,
                displayField: 'answer',
                valueField: 'id'
            },
     renderer:function (value, metaData, record, rowIndex, colIndex, store, view) {
    var
        rec,
        result = value;

    switch(colIndex)
    {
         case 1:
         {
               result = (rec=storeAnswers.getById(value)) ? rec.get("answer") : Ext.String.format("!storeAnswers.getById(\"{0}\")", value);
               break;
         }
         case 2:
         {
               meta.tdAttr = 'data-qtip="' + value + '"';
               result = Ext.String.ellipsis(value, 15);
               break;
         }
    }

    return result;
}},


Просто вставил Ваш вариант функции вместо той, что была. При этом в колонке начинает отображаться просто id, всплывающей подсказки нет.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38024305
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Просто вставил Ваш вариант функции вместо той, что была.
/me думает: я хочу озвездить свою двойню...

Скажите, а
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function megaRenderer(value, metaData, record, rowIndex, colIndex, store, view) {
....
     switch(colIndex)
     {
          case 1:
          {
                ...
          }
          case 2:
          {
                ...
          }
     }
....
}


Вас не сподвигло ни на какие размышления?

И почему
Код: javascript
1.
{ dataIndex: 'local', header: 'ЛВС', ... renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {...} }


если
> Мне нужно соединить эти две функции
?

Код: javascript
1.
2.
3.
4.
....
{ dataIndex: 'local', header: 'ЛВС', ... renderer: megaRenderer },
{ dataIndex: 'comments', header: 'Comments', ... renderer: megaRenderer }
....


_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38025333
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, мы наверное не поняли друг друга. Нужно чтобы и в той и в другой колонке работало и то и то из двух функций, т.е. в колонке с комбобоксом значения id менялись на надписи + всплывала подсказка при наведении, а не просто объединить функции. Или это оно и есть? О_о
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38025633
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57Или это оно и есть?
угу ...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026062
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
case switch оператор ветвления на подобие if else, зачем мне оно в этом случае?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026072
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> case switch оператор ветвления на подобие if else, зачем мне оно в этом случае?
Скажите, Вы и вправду не понимаете, как работает эта функция (даже после этого намека) или тупо троллите?

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026077
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, да я серьезно не понимаю, у меня не работает. Я вставил отдельно функцию, в рендерер подставил renderer: megaRenderer, как Вы и сказали. В колонке отображается id, подсказки нет.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026389
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function megaRenderer(value, metaData, record, rowIndex, colIndex, store, view) {
....
     switch(colIndex)
     {
          case 1:
          {
                ...
          }
          case 2:
          {
                ...
          }
     }
....
}


передается colIndex в котором находится индекс колонки, которая в данный момент рендерится. Подставьте в case'ы (вместо 1 / 2 ) Ваши честные индекса колонок в Ext.grid.Panel.columns
Код: javascript
1.
2.
3.
4.
5.
...
{ dataIndex: 'local', header: 'ЛВС', ... renderer: megaRenderer },
...
{ dataIndex: 'comments', header: 'Comments', ... renderer: megaRenderer }
...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026622
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, вот именно, тем самым он будет переключать сценарий в зависимости от колонки? Получается одна функция для двух колонок, которая делает что-то одно в зависимости от указанной колонки. А мне нужно две функции склеить :) Я не знаю как объяснить по-другому
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026753
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57Получается одна функция для двух колонок, которая делает что-то одно в зависимости от указанной колонки. А мне нужно две функции склеить
/me думает: разрыв шаблона ...

Jeka57Я не знаю как объяснить по-другому
Ну... Когда мне приходится что-то выпытать у бабы Вали их Хацапетовки, я перехожу от абстракций к частностям. Например: берем Иванова Ивана Ивановича, его зряплату 200 руб., делим на количество рабочих дней в месяце 20 и умножаем на количество отработаных дней 10 и получаетм 200/20*10=100 руб. - Правильно? -Да! Теперь заменяем 200 на x, 20 на y, а 10 на z и получаем m = x/y*z. - Правильно? - Нет!
- Почему? -Потому что нужно взять 200, разделить на 20 и умножить на 10

Попробуйте и Вы как-то на пальцах объяснить...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026926
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте совсем отойдем от тех функций, рендереров и т.д. и я поставлю задачу которую мне требуется выполнить :)
Есть колонка. Одна. В ней отображаются id из основной таблицы. Мне нужно:
1. вместо id подставить значение из другой подчиненной таблицы
2. при редактировании в ячейке должен появиться combobox с заполненными значениями из той же подчиненной таблицы в первом пункте
3. при наведении на ячейку должна появляться всплывающая подсказка с текстом из ячейки
Как мне это сделать?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38026987
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
{ dataIndex: 'local', header: 'ЛВС' , width: 50, editor: {
		xtype: 'combobox',
		store: storeAnswers,
		displayField: 'answer',
		valueField: 'id'
	},
	renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
		var
			rec,
			result = (rec=storeAnswers.getById(value)) ? rec.get("answer") : Ext.String.format("!storeAnswers.getById(\"{0}\")", value);

		meta.tdAttr = 'data-qtip="' + result + '"';

		return Ext.String.ellipsis(result, 15);
	}
}


???
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38027053
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, даа, то что нужно, спасибо)
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38031107
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вот тут хотел в гриде перекрасить строки, так вот вставил это:
Код: java
1.
2.
3.
4.
5.
6.
viewConfig: {
getRowClass: function(record, index) {
var c = record.get('error');
if (c == true) {return 'x-grid-error';}
}
},


В css прописано
Код: css
1.
2.
3.
4.
5.
.x-grid-error {
color:red;
font-weight: bold !important;
background-color: red !important;
}


при этом единственное что меняется, это цвет текста, цвет фона не меняется - полный игнор. Почему так может быть?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38031112
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще небольшой вопросик. Вот у меня при открытии страницы выполняется фильтрация
Код: java
1.
2.
storePc.filter('error', 'true');
storePc.load();

и фильтрованные записи отображаются в гриде.
Как сделать так, чтобы при открытии страницы проверялось наличие отфильтрованных записей, если они есть, то выводилось сообщение в окошке, а если нет, то ничего.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38031118
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> при этом единственное что меняется, это цвет текста, цвет фона не меняется - полный игнор. Почему так может быть?
Ваш x-grid-error применяется к tr. Перекрывается в td:
Код: css
1.
2.
3.
4.
5.
6.
..x-grid-row .x-grid-cell {
	...
	background-color: white;
	...
	font: 11px/15px tahoma,arial,verdana,sans-serif;
}


Откройте для себя Firebug .

> Как сделать так, чтобы при открытии страницы проверялось наличие отфильтрованных записей
Не совсем уверен, что правильно Вас понял, но дам на водку
: Ext.data.Store.filters / Store.getCount()

P.S. Давайте не будем устраивать винегрет: дайошЪ каждой проблеме свой отдельный топик!


_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38031140
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Откройте для себя Firebug .
Он для меня давно открыт, без него никак. Но вот сейчас не сообразил что перекрывает, ведь я был уверен что !important спасёт.

>дам на водку
: Ext.data.Store.filters / Store.getCount()
То что нужно, повесил на listener стора, на событие load, работает как часы. Всё правильно сделал?
Код: javascript
1.
2.
3.
4.
listeners:{load:function(){
var storecount = storePc.getCount();
if (storecount > 0) {Ext.Msg.alert('Внимание!', 'Обнаружено изменение в конфигурации компьютера')};
}}



>P.S. Давайте не будем устраивать винегрет: дайошЪ каждой проблеме свой отдельный топик!

Я думал наоборот чтобы темы не плодить, всё здесь спрашивать :) Хорошо, в следующий раз буду новый топик начинать...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38031292
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jeka57Всё правильно сделал?
/me вспоминает: "... Это ведь Ваш сон ..." ©
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38040756
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, помогите с диаграммами, как для них получить данные?
У меня везде нужно считать количество записей - общее, записи, где в определенном поле 1, и записи, где в определенном поле 0. Т.е. диаграммы из двух половинок состоят.
В store грузится не все записи из базы, поэтому посчитать нельзя. Можно ли как-то из extjs отправить запросы в базу и получить в ответ цифры?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38043548
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перекопал документацию, не могу понять, как получить из store определенное значение? Что-то на подобие fieldByName в делфи.
Стор заполняется из базы данных в json формате, строка всегда одна. И к примеру из первого поля нужно получить значение.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38043734
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smthVar = store. getById(1) . get("fieldName")
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38044732
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, спасибо.
Вот косяк какой-то у меня произошел. Есть chart'ы, у них в renderTo стоит значение div, этот div id прописан в html панели. Также есть меню, по клику на пункт которого, всё содержимое центрального региона удаляется(код в топике выше есть). Те диаграммки нужно добавить в два пункта меню. При загрузке страницы chart'ы грузятся без проблем, как только перехожу по ссылке в меню, новая страница появляется, а chart'ов на месте нет.
Я так понимаю они удаляются вместе с командой regionCenter.removeAll(); ?
По логике я пробую добавить в конце прорисовки страницы chart1.render('chart1'); - диаграммка появляется в div chart1, всё как положено, но в консоли ошибка: Uncaught TypeError: Cannot call method 'writeTo' of null . При этом диаграммка не реагирует на мышку и если добавить еще chart2.render('chart2'); , то вторая диаграммка не прорисовывается. Что не так? Как правильно прорисовывать chart'ы в разных местах?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045060
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой Вам совет: вначале разберитесь, а затем применяйте. А для того, чтобы разобраться - берете эту дрозофилу и на ней добиваетесь необходимого Вам функционала.Только осознав происходяще - рихтуете боевой проект.

По сказанному: многа букаф... А, вот, информативности... Давайте разбираться "...кто на ком стоял..." © ...
Jeka57chart\'ы, у них в renderTo стоит значение div, этот div id прописан в html панели
Получается у Вас винегрет: html-разметка и ext\'ы. Конечно, ничего криминального в нем - нЭт. Но лично я без особой нужды (а такое было на моей дай Бог памяти каж-ся лишь один раз) html вообще не юзаю. Думаю и в Вашем случае можно без него обойтись.
Jeka57Также есть меню, по клику на пункт которого, всё содержимое центрального региона удаляется(код в топике выше есть). Те диаграммки нужно добавить в два пункта меню.
Прям таки "диаграммки ... в ... меню"?
Jeka57При загрузке страницы chart\'ы грузятся без проблем
Что Вы подразумеваете под "грузятся"? Создается обЪект? Подгружаются данные для отображения? Они render\'ятся? Почему chart\' ы ? Зачем Вас сразу "два диска C:"?
Jeka57как только перехожу по ссылке в меню, новая страница появляется, а chart\'ов на месте нет.
Страница? Или содержимое центрального региона?
Jeka57Я так понимаю они удаляются вместе с командой regionCenter.removeAll(); ?

С Ваших слов получается - так. Я силой своей мысли не могу прочесть код Вашего handler\'а пункта меню.
Jeka57По логике я пробую добавить в конце прорисовки страницы chart1.render(\'chart1\'); - диаграммка появляется в div chart1, всё как положено, но в консоли ошибка: Uncaught TypeError: Cannot call method \'writeTo\' of null . При этом диаграммка не реагирует на мышку и если добавить еще chart2.render(\'chart2\'); , то вторая диаграммка не прорисовывается. Что не так? Как правильно прорисовывать chart\'ы в разных местах?
Сделайте дрозофилу и покажите.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045153
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, а я вот до сих пор не понял, как отрендерить например какой-нибудь грид в панель, находящуюся в центральном регионе, к примеру. Поэтому как почерпнул из просторов интернета, прописываю html в панели, что-то вроде <div id="grid"></div>, и указываю гриду рендерится в этот div. Но с этим проблемы, я так понял панель может позже грида отрендериться, и гриду уже некуда себя деть, получается пусто.
Так, что у меня. Вот часть панели, в которую нужно отрендерить chart
Код: java
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.
{title: 'Статистическая информация', flex:2, 
                layout:'column',
                defaults: {
                    layout: 'anchor',
                    defaults: {
                        anchor: '100%',
			border:0
                    }
                },
                items: [{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Наличие лицензии',
                        html: '<div id="chart1"></div>',
                    }]
                },{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Операционные системы',
                        html: '<div id="chart2"></div>'
                    }]
                }]	
                }]
}


Эта панель отрисовывается при загрузке страницы.
Точно такая же панель отрисовывается по клику в меню:
Код: java
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.
                            if(rec.get('id')=='computers') {
                            var regionCenter = vp.getLayout().centerRegion;
                            
                            regionCenter.removeAll();
                            regionCenter.add(
                            ...................................................
                            //отрисовываю содержимое центрального региона, здесь также присутствует такая же панель:
                            {title: 'Статистическая информация', flex:2, 
                layout:'column',
                defaults: {
                    layout: 'anchor',
                    defaults: {
                        anchor: '100%',
			border:0
                    }
                },
                items: [{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Наличие лицензии',
                        html: '<div id="chart1"></div>',
                    }]
                },{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items:[{
                        title: 'Операционные системы',
                        html: '<div id="chart2"></div>'
                    }]
                }]	
                }]
}
                            ...................................................
                            );
                            //пытаюсь чтобы chart'ы снова отрендерились в указанные div'ы
                            chart1.render('chart1');
                            chart2.render('chart2');    
                            };


Первый chart появляется, в консоли ошибка Uncaught TypeError: Cannot call method 'writeTo' of null и тишина.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045222
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем Вас так не удовлетворяет:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
{title: 'Статистическая информация', flex:2, 
                layout:'column',
                defaults: {
                    layout: 'anchor',
                    defaults: {
                        anchor: '100%',
			border:0
                    }
                },
                items: [{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items: Ext.create('Ext.chart.Chart', { ... title: 'Наличие лицензии' ... } )
                },{
                    columnWidth: 1/4,
                    baseCls:'x-plain',
                    bodyStyle:'padding:5px 0 5px 5px',
                    items: Ext.create('Ext.chart.Chart', { ... title: 'Операционные системы' ... } )
                }]	
                }]
}


???
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045235
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, а дело в том что у меня данные для chart'ов сначала вытаскиваются из базы, загружаются в store, потом из него по событию load я вытаскиваю значения полей, считаю проценты и создаю новый store с этими данными, с которым уже работает chart. Соответственно chart не появится, если store пустой, поэтому и его рендер стоит там же после создания store.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045281
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает соответствующие store'ы (tampax'ные и chart'овские) рожать сразу?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045402
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал, никак не получалось, всё время ошибки сыпались. Удалось только вот так:
Код: java
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.
storeChart2s.load({
callback: function(){

all = storeChart2s.getAt(0).get('all');
var winxp = storeChart2s.getAt(0).get('winxp');
var win7 = storeChart2s.getAt(0).get('win7');

        var data = [];   

            data.push({
                name: 'Windows XP',
                data: winxp / all * 100
            },
			{
                name: 'Windows 7',
                data: win7 / all * 100
            });

var store = Ext.create('Ext.data.JsonStore', {
        fields: ['name', 'data'],
        data: data,
    });
	
storeChart2 = store;	
chart2create();

}
});


В chart2create(); содержится Ext.create('Ext.chart.Chart', ...
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045406
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибки, я так понимаю, связаны с пустыми store'ами. Поэтому пришлось так делать, рендер только после заполнения стора.
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38045443
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну шо ж Вы беспомощный такой-то... Вот ext\'овский Pie charts , тупо с\'copy -> paste\'сченный и слегка адаптированный к Вашей хотелке
Код: javascript
\r\nExt.onReady(function() {\r\n\tvar\r\n\t\tstore = Ext.create(\'Ext.data.JsonStore\', {\r\n\t\t\tfields: [\'name\', \'data\']\r\n\t\t}),\r\n\t\tdata = [\r\n\t\t\t{ \'name\': \'metric one\',   \'data\': 10 },\r\n\t\t\t{ \'name\': \'metric two\',   \'data\':  7 },\r\n\t\t\t{ \'name\': \'metric three\', \'data\':  5 },\r\n\t\t\t{ \'name\': \'metric four\',  \'data\':  2 },\r\n\t\t\t{ \'name\': \'metric five\',  \'data\': 27 }\r\n\t\t],\r\n\t\tvp = Ext.create("Ext.container.Viewport", {\r\n\t\t\tlayout: "border",\r\n\t\t\titems: [{\r\n\t\t\t\tregion: "west",\r\n\t\t\t\tlayout: {\r\n\t\t\t\t\ttype: "vbox",\r\n\t\t\t\t\talign: "stretch"\r\n\t\t\t\t},\r\n\t\t\t\twidth: 100,\r\n\t\t\t\titems: [{\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Load Data",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\tstore.loadData(data);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, {\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Panel1",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\treplaceRegionCenter(btn.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, {\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Panel2",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\treplaceRegionCenter(btn.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, {\r\n\t\t\t\t\txtype: "button",\r\n\t\t\t\t\ttext: "Panel3",\r\n\t\t\t\t\thandler: function(btn, e) {\r\n\t\t\t\t\t\treplaceRegionCenter(btn.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t}]\r\n\t\t\t},{\r\n\t\t\t\tregion: "center",\r\n\t\t\t\tid: "regionCenter"\r\n\t\t\t}]\r\n\t\t}),\r\n\t\treplaceRegionCenter = function(text)\r\n\t\t{\r\n\t\t\tvar\r\n\t\t\t\tregionCenter = vp.getLayout().centerRegion;\r\n\r\n\t\t\tregionCenter.removeAll();\r\n\t\t\tregionCenter.add(Ext.create("Ext.panel.Panel", {\r\n\t\t\t\tregion: "center",\r\n\t\t\t\tid: text,\r\n\t\t\t\titems: Ext.create(\'Ext.chart.Chart\', {\r\n\t\t\t\t\twidth: 500,\r\n\t\t\t\t\theight: 350,\r\n\t\t\t\t\tanimate: true,\r\n\t\t\t\t\tstore: store,\r\n\t\t\t\t\ttheme: \'Base:gradients\',\r\n\t\t\t\t\tseries: [{\r\n\t\t\t\t\t\ttype: \'pie\',\r\n\t\t\t\t\t\tangleField: \'data\',\r\n\t\t\t\t\t\tshowInLegend: true,\r\n\t\t\t\t\t\ttips: {\r\n\t\t\t\t\t\t\ttrackMouse: true,\r\n\t\t\t\t\t\t\twidth: 140,\r\n\t\t\t\t\t\t\theight: 28,\r\n\t\t\t\t\t\t\trenderer: function(storeItem, item) {\r\n\t\t\t\t\t\t\t\tvar total = 0;\r\n\t\t\t\t\t\t\t\tstore.each(function(rec) {\r\n\t\t\t\t\t\t\t\t\ttotal += rec.get(\'data\');\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tthis.setTitle(storeItem.get(\'name\') + \': \' + Math.round(storeItem.get(\'data\') / total * 100) + \'%\');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\thighlight: {\r\n\t\t\t\t\t\t\tsegment: {\r\n\t\t\t\t\t\t\t\tmargin: 20\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tlabel: {\r\n\t\t\t\t\t\t\tfield: \'name\',\r\n\t\t\t\t\t\t\tdisplay: \'rotate\',\r\n\t\t\t\t\t\t\tcontrast: true,\r\n\t\t\t\t\t\t\tfont: \'18px Arial\'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}]\r\n\t\t\t\t})\r\n\t\t\t}));\r\n\t\t};\r\n});\r\n
\r\n
Все фунциклирует вне зависимости от того, когда произошла загрузка store\'а... (можете сначала тыцьнуть в кнопоцку "PanelX", а затем в "Load Data" и наоборот)
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38047504
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно, проехали)) Сделал немного подругому-работает.
Проблема другая появилась. Уж очень плохо выглядят диаграммы на мЕньшем разрешении экрана, чем у меня, они съезжают и их не видно. Я так понимаю чтобы сделать их размер автоматически регулируемым под размеры остальных блоков используется параметр autoSize?
Если я делаю так:
Код: java
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.
var chart = Ext.create('Ext.chart.Chart', {
    width: 280,
    height: 230,
    animate: true,
	autoSize: true,
    shadow: true,
    store: storeChart2,
    renderTo: 'chart2',
    legend: {
//position: 'right'
    },
    theme: 'Base:gradients',
    series: [{
        type: 'pie',
        field: 'data',
        showInLegend: false,
        highlight: {
          segment: {
            margin: 20
          }
        },
		 tips: {
                  trackMouse: true,
          width: 100,
                  renderer: function(storeItem, item) {
                    this.setTitle(storeItem.get('name') + ': ' + Math.round(all * storeItem.get('data') / 100) +' ('+ Math.round(storeItem.get('data') / 100 * 100) + '%)');
                  }
                },
        label: {
            field: 'name',
            display: 'rotate',
            contrast: true,
            font: '12px Arial'
        }
    }]
});


то в консоли появляются ошибки:
Код: plaintext
1.
Неожиданное значение -Infinity при анализе атрибута width.
Неожиданное значение -Infinity при анализе атрибута height.
и размер остается одним и тем же. В чем может быть проблема?
...
Рейтинг: 0 / 0
extjs. связанные таблицы.
    #38047508
Jeka57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В консоли разработчика браузера Chrome ошибки следующие:
Код: plaintext
1.
Error: Invalid value for <svg> attribute width="-Infinity"
Error: Invalid value for <svg> attribute height="-Infinity"
...
Рейтинг: 0 / 0
84 сообщений из 84, показаны все 4 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / extjs. связанные таблицы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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