내 요구에 here중첩 확장 그리드 - 내부 그리드 붕괴 제대로
을 찾을 수있는 최초의 ExtJS 예제를 수정하려고 확장되지 않습니다. 특정 항목을 클릭하고 다른 확장 가능한 표를 여는 확장 가능한 표를 원합니다.
내가 기존 코드에 이러한 변경 사항을 도입 시도하고 다음과 같은 문제가 발생했습니다 : 그리드가로드 될 때 그 옆에 각각의 내부 그리드에서
- 은 행은 마이너스 기호로 표시
- 열 수있는 내부 격자의 행을 클릭하지만 다시 클릭하면 축소되지 않습니다.
- 내부 격자의 각 행과 외부 격자의 행 사이에 "신비한"연결이 있음을 눈치 챘습니다. 예를 들어 내부 격자의 두 번째 행을 두 번 클릭하면 축소/확장 반응이 발생합니다 외부 그리드의 두 번째 행에 표시됩니다 (그러나 확장 된 후 내부 격자에 영향을 미치지 않음).
어디에서 코드를 잘못 또는 잘못 사용 했습니까?
여기 내 코드입니다 :
var urlObject = Ext.urlDecode(document.location.search);
var request_url = 'my_url';
var request_state = 'my_state';
// row expander
var expander = new Ext.ux.grid.RowExpander({
tpl : new Ext.Template(
'<p>{layer_name} --- under construction!!!</p>'
)
});
expander.on('expand', function(rowExp, rec, body, rowIndex) {
var inner_expander = new Ext.ux.grid.RowExpander({
tpl : new Ext.Template(
'<p>under construction!!!</p>'
)
});
var sub_layer_store = new Ext.data.JsonStore ({
url: request_url,
fields: ['sub_layer_name'],
root: 'sub_layer_names',
baseParams: {
_state: request_state,
_action: 'get_sub_layer_names',
layer_name: rec.data.layer_name
}
});
var sub_layer_grid = new Ext.grid.GridPanel({
store: sub_layer_store,
cm: new Ext.grid.ColumnModel({
defaults: {
width: 20,
sortable: true
},
columns: [
inner_expander,
{header: "Sub-Layer", width: 40, dataIndex: 'sub_layer_name'}
]
}),
viewConfig: {
forceFit:true
},
width: 1100,
height: 200,
plugins: inner_expander,
collapsible: true,
animCollapse: false,
title: 'Sub-Layers information',
iconCls: 'icon-grid',
renderTo: body
});
//load the sub grid
sub_layer_grid.store.load();
});
var layers_store = new Ext.data.JsonStore ({
url: request_url,
fields: ['layer_name'],
root: 'layer_names',
baseParams: {
_state: request_state,
_action: 'get_layer_names'
}
});
var layers_grid = new Ext.grid.GridPanel({
store: layers_store,
cm: new Ext.grid.ColumnModel({
defaults: {
width: 20,
sortable: true
},
columns: [
expander,
{header: "Layer", width: 40, dataIndex: 'layer_name'}
]
}),
viewConfig: {
forceFit:true
},
width: 1200,
height: 500,
plugins: expander,
collapsible: true,
animCollapse: false,
title: 'Layers information',
iconCls: 'icon-grid'
});
Ext.onReady(function(){
var el = document.getElementById('my_container');
layers_grid.store.load();
layers_grid.render(el);
});
감사합니다!
나는 이것을 포기하고 Ext.tree.TreePanel, Ext.tree.TreeLoader 및 Ext.tree.AsyncTreeNode와 함께 작동하도록 코드를 변경했습니다. 그것은 우아하지 않을 수도 있지만 최소한 작동 ... –
TreeGrid를 시도하십시오 – ncank
TreeGrid에는 소스 코드가없고 내부 격자의 필드 수와 유형이 외부와 일치해야합니다. 이 멋진 예제를 찾았습니다. (TreePanel을 사용하기로 결정했을 때 시도해 보지 못했습니다. 실제로는이 작업을 잘 수행합니다.) http://mikhailstadnik.com/ext/examples /nested-grid.htm 또한 내부 격자의 한 레이어 만 필요한 경우 위의 코드는 잘 작동합니다 ... –