ExtJS自带表格组件中的行号, new Ext.create('Ext.grid.RowNumberer',{'text':'行号',flex:1}),
var tagGrid=Ext.create('Ext.grid.Panel',{ hidden:true, store:tagStore, viewConfig:{ columnsText: '列', sortAscText: '升序', sortDescText: '降序' }, columns:[ new Ext.create('Ext.grid.RowNumberer',{'text':'行号',flex:1}), {header:'标签时间',dataIndex:'time',flex:3}, {header:'标签内容',dataIndex:'tag',flex:5}, {header:'标签对应起始页',dataIndex:'page',flex:2}, { flex:1, xtype:'actioncolumn', align:'center', items:[{ text:'edit', icon:'image/bianji.jpg', handler: function(grid,rowIndex,colIndex,item,e){ grid.getStore().removeAt(rowIndex); grid.view.refresh(); } }] }] });
在删除某一行或某几行后,行号会变得不连续。因为源码中的函数如下:
renderer: function(value, metaData, record, rowIdx, colIdx, store) { if (this.rowspan){ metaData.cellAttr = 'rowspan="'+this.rowspan+'"'; } metaData.tdCls = Ext.baseCSSPrefix + 'grid-cell-special'; return store.indexOfTotal(record) + 1; }
返回值是 store.indexOfTotal(record) + 1; 所以即使删除了这一行,它的行号还是这条数据在整个store中的位置。
可以把这个返回值改成 return rowIdx + 1;
这样在删除某一行的代码后面添加一句刷新的代码就行了,如:
xtype:'actioncolumn', align:'center', items:[{ text:'edit', icon:'image/bianji.jpg', handler: function(grid,rowIndex,colIndex,item,e){ grid.getStore().removeAt(rowIndex); grid.view.refresh(); } }]