grid.store = waitersStore;// <-а только так |
Объясню для чего я это затеял (может найдется другое решение)
Окно у меня имеет разметку border. На окне имеется выдвижная панель, которая имеет region : 'east'и выдвигается влево. Вместе с ней изменяет свои размеры и grid который имеет region : 'center'. Проблема в том, что у меня 8 grid'ов, а region : 'center'актуален только для одного, поэтому когда панель меняет свои размеры остальные grid'ы свои размеры не меняют. Например у грида Клиенты стоит region center, когда я выбираю таблицу официанты (все остальные таблицы невидимы) она уже не меняет свои размеры вместе с панелью. Это мне необходимо устранить. |
блин,
oGrid.reconfigure( Ext.data.Store store, Ext.grid.ColumnModel colModel ) |
у тебя есть Viewport c layout:'border'
Viewport имеет items Ext.Panel({region: 'east'}) создай еще один Ext.Panel({region:'center'}) и запихни в него свои таблицы и по идее, меняется размер панели, и будут подгоняться таблицы внутри панели. Думаю, ты просто не до конца продумал свой layout и пытаешься решить проблему совсем не теми методами. ну тебе видее |
Попробовал реализовать то, что предложил underW. Но, к сожалению, таблицы не меняют свои размеры вместе с панелью, только если установить у панели layout : 'border', а у таблицы region : 'center', но опять же изменять размеры будет только одна таблица.
|
покажи пример реализации.
и потом, ты знаешь что 'border' - это не единственный тип layout'a, например, можно поставить 'fit'. |
Вот задается panel1 cо всеми гридами:
var panel1 = new Ext.Panel({
layout : 'border',
//autoScroll : true,
split : true,
region : 'center',
items : [
grid,
waitersGrid,
stolikiGrid,
bludaGrid,
napitkiGrid,
zakaziGrid,
zakaziBludGrid,
zakaziNapitkovGrid,
]
});
Вот задается panel2 с datepicker:
var datePickerPanel = new Ext.Panel({
region : 'east',
title : 'Дата и время',
collapsible : true,
split : true,
// margins : '3 0 3 3',
//cmargins : '3 3 3 3',
width : 204,
items : [datepicker]
});
Вот главное окно:
var win = new Ext.Window ({
id : 'mainWindow',
title : 'Ресторан "Рауль Дьюк"',
height : 360,
width : 935,
layout : 'border',
//autoScroll : true,
modal : true,
border : true,
closabled : false,
//region : 'center',
plain : true,
resizable : false,
collapsible : true,
items : [
winItems // эти две панели
],
tbar : mainToolBar
})
Вот грид Клиенты:
var grid = new Ext.grid.EditorGridPanel({
region : 'center',
x : 0, //задаем координаты расположения grid
y : 0,
title : 'Клиенты', /*'Клиенты'*/
id : 'myGrid',
height : 300,
width : 716,
trackMouseOver : false,
frame : true,
style : {visibility : 'visible'},
columnLines : true,
stripeRows : true,
viewConfig: {
forceFit:true
},
bbar : toolBar,
store : jsonStore, /*jsonStore*/
columns :
[
new Ext.grid.RowNumberer(),
{header : '№',/*hidden : true,*/dataIndex: 'id_klients'},
{header : 'Фамилия', sortable: true, dataIndex: 'surname', editor: textField},
{header : 'Имя', dataIndex: 'name', editor : textField},
{header : 'Отчество', dataIndex: 'patronymic', editor : textField},
{header : 'Дата', sortable: true, dataIndex: 'date', editor: date_editor, renderer : Ext.util.Format.dateRenderer('d/m/Y')},
{header : 'Номер столика',sortable: true, dataIndex: 'id_stolika',editor : stolik_edit},
{header : 'Официант', dataIndex: 'waiters_name', editor: waiters_edit}
]
});
Вот таблица официантов:
var waitersGrid = new Ext.grid.EditorGridPanel({
region : 'center',
id : 'waitersGrid',
//region : 'center',
title : 'Официанты',
height : 300,
width : 716,//716
frame : true,
columnLines : true,
stripeRows : true,
x : 0,
y : 0,
viewConfig: {
forceFit:true
},
style : {visibility : 'hidden'},
bbar : toolBarWaiters,
store : waitersStoreDB,
columns : [
new Ext.grid.RowNumberer(),
{header : 'id', dataIndex : 'id_waiters'},
{header : 'Имя официанта', dataIndex : 'waiters_name', editor: textField},
{header : 'Стаж работы', dataIndex : 'stazh', editor : numberField}
]
});
|
глянь на вот это, может это подойдет:
Ext.onReady(
function(){
Ext.Msg.alert("1", "2");
var oFirstGrid = new Ext.grid.GridPanel({
title: 'oFirstGrid',
store :[] ,
flex :1,
columns : [
{header:"one"},
{header:"two"},
{header:"three"}],
viewConfig: {
forceFit: true
}})
var oSecondGrid = new Ext.grid.GridPanel({
title: 'oSecondGrid',
flex :1,
store :[] ,
columns : [
{header:"one"},
{header:"two"},
{header:"three"}],
viewConfig: {
forceFit: true
}})
var oThreeGrid = new Ext.grid.GridPanel({
title: 'oThreeGrid',
flex :1,
store :[] ,
columns : [
{header:"one"},
{header:"two"},
{header:"three"}],
viewConfig: {
forceFit: true
}})
var oEastPanel = new Ext.Panel({
region : 'east',
title : "oEastPanel",
width : 200,
split : true
})
var oCenterPanel = new Ext.Panel({
region : 'center',
title : "oCenterPanel",
layout:'vbox',
layoutConfig: {
align : 'stretch',
pack : 'start',
},
items: [
oFirstGrid,oSecondGrid, oThreeGrid
]
})
new Ext.Viewport({
title : 'viewPort',
layout : 'border',
items :[oEastPanel, oCenterPanel]
})
})
двигаем oEastPanel - автоматически меняется размер таблиц в oCenterPanel. |
Спасибо за помощь
Все решилось намного проще: у всех таблиц я установил anchor : '100%' и теперь они меняют свои размеры относительно контейнера, т.е. относительно панели, так что спасибо за идею с панелью |
|
| Часовой пояс GMT +3, время: 06:29. |