我需要使用具有colspan和rowspan功能的ExtJS 4.1網格來實現邏輯。如何使用ExtJS Grid製作具有行/集體的表格式結構4.1
0
A
回答
0
解決方法一:ExtJS的電網與ROWSPAN/COLSPAN
如果你用一個正常的ExtJS的網格,每個參數值一列,你可以(AB)的使用在某種程度上渲染:
renderer:function(value, meta, record, rowIndex, colIndex, store, view) {
var columnManager = view.ownerCt.getColumnManager(),
previousRecord = store.getAt(rowIndex-1),
nextRecord = store.getAt(rowIndex+1),
column = columnManager.getHeaderAtIndex(colIndex),
previousColumn = columnManager.getHeaderAtIndex(colIndex-1),
nextColumn = columnManager.getHeaderAtIndex(colIndex+1),
cellAbove = view.getCell(previousRecord,column),
cellBelow = view.getCell(nextRecord,column),
cellLeft = view.getCell(record, previousColumn),
cellRight = view.getCell(record, nextColumn);
...
if(someCondition) {
meta.tdAttr='rowSpan=4';
} else if (someOtherCondition /* any of the previous three records has someCondition */) {
meta.tdStyle='display:none';
}
return value; // Don't forget this, or else your cell is empty!
}`
以類似的方式,我曾經實現過一個渲染器,該渲染器合併了具有相同內容的相鄰單元格,因爲我必須替換MSFlexGrid
with MergeCells=flexMergeFree
。
四個缺點,我知道:
- ,你必須總是顯示正確的金額:無爲您列跨度和行跨度。
- 由於您覆蓋了正常的渲染器,因此無法使用特殊列(numbercolumns,datecolumns,checkcolumns)輕鬆使用它。
- 您的數據必須位於「具有原始值的記錄」格式中,因此當您加載商店時,您必須遍歷樹並生成記錄。
- 將不再在ExtJS6中工作;不知道ExtJS的5
解決方法二:嵌套網格
您可以輕鬆地render a grid into a grid's RowExpander plugin。
plugins: [{
ptype: "rowexpander",
rowBodyTpl: ['<div id="SessionInstructionGridRow-{ClientSessionId}" ></div>']
listeners:{
expandbody:function() {
var targetId = 'SessionInstructionGridRow-' + record.get('ClientSessionId');
if (Ext.getCmp(targetId + "_grid") == null) {
var sessionInstructionGrid = Ext.create('TS.view.client.SessionInstruction', {
renderTo: targetId,
id: targetId + "_grid"
});
rowNode.grid = sessionInstructionGrid;
sessionInstructionGrid.getEl().swallowEvent(['mouseover', 'mousedown', 'click', 'dblclick', 'onRowFocus']);
sessionInstructionGrid.fireEvent("bind", sessionInstructionGrid, { ClientSessionId: record.get('ClientSessionId') });
}
}
}
}],
主要缺點是它看起來像一個網格內的網格,而不是像rowSpan和colSpan的單個網格;所以它不在你的屏幕截圖附近。但這就是我今天實現顯示包含數組的字段內容的方式。如果你想顯示結構化數據(對象),你也可以將propertygrid
渲染到rowExpander中。
+0
我還需要針對給定問題的邏輯/解決方案 – Jason
相關問題
- 1. C#Grid Paging和ExtJS 4.1
- 2. 如何使用getById? (ExtJS 4.1)
- 3. 如何從extjs中的grid中的actioncolumn的渲染器調用控制器4.1
- 4. 如何使用MVC Contrib Grid來製作更好的表格?
- 5. 如何ExtJS的4.1
- 6. 如何在ExtJS 4.1中集成Flowplayer
- 7. 如何在ExtJS 4.1中禁用網格中的某些行
- 8. 如何用java程序製作一個具有層次結構的JSON結構
- 9. ExtJs Grid面板中的日期格式
- 10. 如何使用構造模式用於具有JPA的實體
- 11. 與交叉參考表格製作實體模型 - 的EntityFramework 4.1
- 12. ExtJS Grid的構建插件
- 13. 使用Extjs創建類似結構的表格
- 14. Extjs 4.1如何從表單域調用控制器方法
- 15. ExtJS的4.1如何組合
- 16. 如何使用treecombo在ExtJS的工作4.1
- 17. 如何在網格中使用getState? [ExtJS 4.1]
- 18. 如何在Extjs 4.1中製作可滾動的tabpanel?
- 19. drupal_render:如何製作格式良好的div結構?
- 20. ExtJs Grid BufferRenderer不顯示網格行
- 21. 如何使用ExtJS的委託模式ExtJS的工具欄
- 22. sql:爲注入製作表格結構
- 23. 具有現有類和現有表的實體框架4.1
- 24. EXTJS形式結合到具有關聯
- 25. ag-Grid中的行格式
- 26. 如何在ExtJS 4.1控制器中實現listener for selectionModel 4.1 MVC
- 27. 使用行擴展器在ExtJS 4.1中嵌套網格
- 28. extjs應用程序體系結構
- 29. 如何創建具有相同結構的工作表?
- 30. EXTJS 4.1 - 如何initComponent功能
您的標題不是特別具有描述性,所以我修改了它 - 隨意修改它,以描述您想要做的事情。另外,如果你可以展示你的嘗試,這會有很大的幫助。目前你似乎已經爲你的整個項目提出了要求,而人們當然不會爲你做。如果你可以修改你的問題來包含可能的最小問題,一旦解決了問題,將允許你完成剩下的問題,這將是理想的。 – halfer