#extjs
#extjs
Вопрос:
Я использовал monitorResize:true
при отображении сетки в окне ( Ext.Window
). Но это не помогает.
CListingEditorGrid = new Ext.grid.EditorGridPanel({
id: 'CListingEditorGrid',
renderTo:'grid_div',
viewConfig:{
forceFit:true // CHANGED THIS
},
store: CDataStore,
cm: CColumnModel,
sm:selmodel,
enableColLock:false,
clicksToEdit:1,
selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
plugins:[filters],
bbar: new Ext.PagingToolbar(
{
store:CDataStore,
pageSize:10,
plugins: [filters]
}),
tbar: [{
text: 'Add Contact',
tooltip: 'Add Contact',
handler: displayFormWindow
},
{
text:'Delete Contact',
tooltip:'Delete Contact',
handler:deleteContacts
}
]
});
CListingWindow = new Ext.Window({
id: 'CListingWindow',
title: 'Contacts List',
closable:true,
width:1000,
height:500,
layout: 'fit',
items: [CListingEditorGrid],
renderTo:'grid_div',
resizable:false
});
Ответ №1:
Несколько ошибок:
-
renderTo
не следует использовать два компонента и указывать на один и тот же div. Это неправильный способ. -
Вы можете отобразить все это целиком, даже не используя элементы. Попробуйте следующий код:
var CListingEditorGrid = new Ext.grid.EditorGridPanel({
//normally, we don't assign ids if there is no obvious reason to use this.
//id: 'CListingEditorGrid',
//We don't need this as this grid will be rendered into the window
//renderTo: 'grid_div',
viewConfig: {
//forceFit is used by the GridView, so to have the GridView
//fits into the grid, not grid fits into the window
forceFit: true
},
store: CDataStore,
cm: CColumnModel,
//You don't need to have this
//sm: selmodel,
enableColLock: false,
clicksToEdit: 1,
//The default sm is already multi-selectable so you could probably
//remove this selModel.
/*
selModel: new Ext.grid.RowSelectionModel({
singleSelect: false
}),
*/
plugins: [filters],
bbar: new Ext.PagingToolbar({
store: CDataStore,
pageSize: 10,
plugins: [filters]
}),
tbar: [{
text: 'Add Contact',
tooltip: 'Add Contact',
handler: displayFormWindow
}, {
text: 'Delete Contact',
tooltip: 'Delete Contact',
handler: deleteContacts
}]
});
var CListingWindow = new Ext.Window({
//id: 'CListingWindow',
title: 'Contacts List',
//closable: true,
width: 1000,
height: 500,
layout: 'fit',
items: [CListingEditorGrid],
//renderTo: 'grid_div',
resizable: false
});
//Show this window
CListingWindow.show();
Сообщите нам, если это сработает. Я еще не тестировал это. Но сетка должна хорошо соответствовать окну с помощью параметра layout:'fit'
.
Комментарии:
1. Это работает, проблема была в том, как вы сказали в renderTo — Спасибо
2. Нет проблем 🙂 Вы можете узнать больше из предоставленных примеров или ознакомиться с их исходными кодами, много полезного!
Ответ №2:
предполагая, что вы используете ext 3…
попробуйте это:
var store = new Ext.data.ArrayStore({
fields: [{name: 'Id'},{name: 'Name'},{name: 'Email'}],
data: [
['1','Egy','egy.mohammad.r@callysta-engineering.com'],
['2','Ebo','mohammad.erdin@gmail.com']
]
});
var grid = new Ext.grid.GridPanel({
store: store,
viewConfig :{
forceFit : true // thisfor force fit the grid (no horizontal scroll)
},
columns: [
{header: 'Id',dataIndex: 'Id'},
{header: 'Name',dataIndex: 'Name'},
{header: 'Email', dataIndex: 'Email'}
]
});
var win = new Ext.Window({
layout:'fit',
title : "resizeable",
width:500,
height:300,
closeAction:'hide',
items: [grid]
});
win.show(this);
здесь 2 ошибки :
monitorResize
не является одним из видов конфигураций вExt.Window
илиExt.grid.GridPanel
- когда вы используете
Ext.Window
и хотите разместить содержимое внутри .. используйтеlayout: "fit"
config.
Комментарии:
1. Я внес изменения, но это не работает. Я визуализирую ее в элементе <div>, и изменения выполняются с использованием forceFit: true в GridEditorPanel, и я уже использовал layout:’fit’
2. попробуйте показать мне свой текущий код, обновив свой вопрос.. может быть, я мог бы вам помочь .. (я думаю, что я не понимаю)
3. я вижу проблему… вы определяете a
CListingEditorGrid
и отображаете его в agrid_div
… и вы определяете окно, содержащееCListingEditorGrid
и отображающее егоgrid_div
также … я думаю, вам не нужно окно, если вы хотите отобразитьeditorGridPanel
в div… но если это так, я поищу ответ для вас .. я отредактирую свой ответ, когда получу его…