Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос по ExtJs 2.3, GridPanel и TabPanel / 7 сообщений из 7, страница 1 из 1
17.09.2012, 16:03:30
    #37960659
rivo_see
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ExtJs 2.3, GridPanel и TabPanel
Здравствуйте! Я тут допиливаю чужой код. До этого с экстом не работал. Курю доки, но лучше б я курил чё-то покрепче, они меня с ума сводят.
Есть tabPanel, по клику на вкладке в контейнер 'grid_panel' загружается грид.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
....
xtype: "tabpanel",
						border: false,
						region: "center",					
						activeTab: 0,
						items: [{
							layout: "fit",
							title: "Грид",
							items: [{xtype: 'box',autoEl: {tag: 'div', id: 'grid_panel'}}],
							listeners:{
								activate : 	getGrid
							}
						}
....


вот собственно грид
Код: 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.
gridObject = new Ext.grid.GridPanel({
			id: 'archive',
			loadMask: true,
			border: false,
			autoScroll: true,
			renderTo: 'grid_panel',
			width: '100%',
			store: gridStore,
			viewConfig: {
				forceFit: true
			},
			autoHeight: true,
			autoScroll: true,
			columns: [
				{ header: 'Название', dataIndex: 'owner_str', width: 400 },
				{ header: 'Путь', dataIndex: 'path', width: 400 },
				{ header: 'Дата', dataIndex: 'date', width: 200 },
				{ header: 'Причина', dataIndex: 'reason' }
			],
			listeners: {
				scope: this,
				rowcontextmenu: function(_, index, e) {
					e.stopEvent();
					var coords = e.getXY();
					var selModel = Rto.AdminCp.Archive.gridObject.getSelectionModel();
					selModel.isSelected(index) || selModel.selectRow(index);
					Rto.AdminCp.Archive.gridContextMenu.showAt([coords[0], coords[1]]);
				},
				rowdblclick: function(grid) {
					var record = grid.getSelectionModel().getSelected().data;
				}
			}
		})


Проблемы с этим связанные:
1. не отображается вертикальный скрол.
2. при каждом переходе по вкладкам вызывается gridStore.load() чтобы обновить данные, и грид при каждом переходе добавляется к уже существующему снизу, а нужно чтоб он его заменял или старый грид перерисовывался. как удалять предыдущий? Или как вообще правильно сделать?
Господа специалисты, направьте на путь истинный, пожалуйста.
...
Рейтинг: 0 / 0
17.09.2012, 16:26:30
    #37960719
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ExtJs 2.3, GridPanel и TabPanel
Начните с:
rivo_see
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
....
xtype: "tabpanel",
						border: false,
						region: "center",					
						activeTab: 0,
						items: [{
							layout: "fit",
							title: "Грид",
							items: [{xtype: 'box',autoEl: {tag: 'div', id: 'grid_panel'}}],
							listeners:{
								activate : 	getGrid
							}
						}
....


http://www.sencha.com/learn/layout-faq/ 1. layout is missing in your component structure or you have over nested your structure. For example:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
{
  layout: 'border',
  items: [{
    region: 'east',
    title: 'Title',
    items: [{
      xtype: 'grid',
      ...
    }]
  }]
}
//The above has an extra panel, which was both unneeded and did
//not have a layout defined, it should be:
{
  layout: 'border',
  items: [{
    region: 'east',
    title: 'Title',
    xtype: 'grid',
    ...
  }]
}
...
Рейтинг: 0 / 0
17.09.2012, 16:55:51
    #37960797
rivo_see
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ExtJs 2.3, GridPanel и TabPanel
Ex_Soft,

Спасибо, а как тогда грид по событию привязать к нужному табу? я его создаю отдельно же... и активации табы рендерю в том контейнере(который лишний), в табу рендерить у меня не получилось.
...
Рейтинг: 0 / 0
17.09.2012, 17:16:19
    #37960843
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ExtJs 2.3, GridPanel и TabPanel
rivo_seeкак тогда грид по событию привязать к нужному табу?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var
	tp = new Ext.TabPanel({
		activeTab: 0,
		items: [
			new Grid1(),
			new Grid2(),
			grid3,
			grid4,
			grid5
		]
	});


rivo_seeтабы рендерю в том контейнере(который лишний), в табу рендерить у меня не получилось.
http://www.sencha.com/learn/layout-faq/ renderTo - renders the Component into the specified existing element.

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 render its child items.
...
Рейтинг: 0 / 0
17.09.2012, 18:00:52
    #37960938
rivo_see
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ExtJs 2.3, GridPanel и TabPanel
Ex_Soft,

возможно я Вас не понимаю, или я неправильно сформулировал вопрос. Пока я не нажал на вкладке и не вызвал функцию loadGrid
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
xtype: "tabpanel",
						border: false,
						region: "center",
						activeTab: 0,
						items: [{
							layout: "fit",
							title: "Здесь будет грид после клика на табе",
							listeners:{
								activate : 	loadGrid
							}
						}


грида вообще не должно существовать в структуре. все события его инициализации, загрузки данных в хранилище должны произойти только после клика на табе. иначе это всё ещё до рендеринга будет висеть в памяти, я правильно понимаю? Так вот, после события я создаю грид
Код: javascript
1.
gridObject = new Ext.grid.GridPanel({....

и хочу его нарисовать в нужную вкладку.
Если я правильно понял, то такая запись
Код: javascript
1.
2.
items: [
			new Grid1(),


сразу загрузит уже какой-то существующий грид, который я должен подготовить заранее и загрузить в него данные.
Может я и не прав.
...
Рейтинг: 0 / 0
17.09.2012, 18:44:38
    #37961015
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ExtJs 2.3, GridPanel и TabPanel
/me думает: еще один ?..
Ex_Soft...grid - только визуализирует данные. Сами данные хранятся в store...

Мало того: пока Вы не активизируете TAB, грид даже не от'render'иться и, соответственно, никакие данные грузиться не будут...
...
Рейтинг: 0 / 0
18.09.2012, 09:56:02
    #37961614
rivo_see
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ExtJs 2.3, GridPanel и TabPanel
Ex_Soft,
огромное спасибо, со всем разобрался
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос по ExtJs 2.3, GridPanel и TabPanel / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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