树形设置固定一列
app.hrefMethod = function(NODE_ID, key,colname) {
Cs.info(NODE_ID);
Cs.info(key);
zj_type=colname==='流入'?'0':colname==='流出'?'1':'3';
app.detail_window.show();
app.xwl.I_BUSI_DATE.setValue(key);
app.xwl.I_ZJ_TYPE.setValue(zj_type);
app.xwl.I_BUSINESS_ID.setValue(NODE_ID);
app.xwl.seekBtn.fireEvent('click');
};
app.lockTreeFirstColumn = function() {
var grid = app.dataGrid;
if (!grid || !grid.rendered) return;
try {
var hdrCt = grid.headerCt;
var view = grid.getView();
if (!hdrCt || !view) return;
// 给当前 grid 根元素加唯一标记类名,CSS 选择器加前缀避免影响其他表格
grid.el.addCls('grid-locked-col');
// 注入 CSS:仅作用于带 grid-locked-col 类的表格
Ext.get('treegrid-locked-style')?.remove();
var s = document.createElement('style');
s.id = 'treegrid-locked-style';
s.type = 'text/css';
s.appendChild(document.createTextNode(
'.grid-locked-col .x-grid-header-ct{overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:none!important;}' +
'.grid-locked-col .x-grid-header-ct::-webkit-scrollbar{height:0!important;display:none!important;}' +
'.grid-locked-col .x-grid-cell:first-child{position:sticky!important;left:0!important;z-index:999!important;background:#fff!important;border-right:2px solid #d0d0d0!important;}' +
'.grid-locked-col .x-grid-cell:first-child .x-grid-cell-inner{background:#fff!important;}'
));
document.head.appendChild(s);
// 找到第一个可见表头,用 transform 随滚动偏移校正位置
var firstHdr = hdrCt.el.down('.x-column-header:not(.x-column-header-hidden)');
if (!firstHdr) return;
// 设表头背景色避免透明穿透
firstHdr.dom.style.background = '#E7E8EB';// 'inherit';
var adjustHeader = function() {
var sl = hdrCt.el.dom.scrollLeft || 0;
firstHdr.dom.style.transform = 'translateX(' + sl + 'px)';
firstHdr.dom.style.zIndex = '100';
};
// 初始执行 + 每次滚动校正
adjustHeader();
view.getEl().on('scroll', adjustHeader);
Cs.info('lockTreeFirstColumn OK');
} catch(e) {
Cs.info('lockTreeFirstColumn error:', e);
}
};
app.trade = {};
然后再设置
// // var grid = Ext.ComponentQuery.query('treepanel#dataGrid')[0];
// var grid=app.viewport1.queryById('dataGrid');
// Cs.info('grid:',grid);
// var originalColumns = grid.initialConfig.columns;
// // var originalColumns = grid.headerCt.getGridColumns();
// Cs.info('originalColumns:',originalColumns);
// Cs.info('G:',Wb.getColumns(grid));
// Cs.info('S:',store);
// Cs.info(app.trade);
// Cs.info(app.trade['20260506'].monthay_cn);
var columns_new = [];
var item_name={
text: '项目',
width: 250,
dataIndex: 'INDEX_NAME',
xtype: "treecolumn"
};
columns_new.push(item_name);
columns_new.push({
text: 'INDEX_ID',
width: 150,
hidden: true,
dataIndex: 'INDEX_ID'
});
columns_new.push({
text: 'PARENT_INDEX_ID',
width: 150,
hidden: true,
dataIndex: 'PARENT_INDEX_ID'
});
Cs.info(records.childNodes);
var rec=records.childNodes[0].data;
var regex = /^\d{8}$/;
var groups = {};
Wb.each(rec, function(k, v) {
if (regex.test(k)===true)
{
// Cs.info('k',k);
var key = k.substring(0, 8);
if (!groups[key]) {
groups[key] = {
text: app.trade[key].weekday_cn,
width: 100,
items:[]
}
;
}
// var lastChar = k.slice(-1); // 获取最后一个字符
// var col_name;
// if (lastChar === 'A') {
// col_name = '日初活期';
// } else if (lastChar === 'B') {
// col_name = '流入';
// } else if (lastChar === 'C') {
// col_name = '流出';
// } else {
// col_name = '日终活期';
// }
groups[key].items.push(
{
text: app.trade[key].monthay_cn,
width: 100,
align: "right",
format: "#,##0.00",
renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
// if(col_name=='日初活期'||col_name=='日终活期')
// return Wb.format(value,'#,##0.00');
NODE_ID=record.data.INDEX_ID;
// // Cs.info('---A',NODE_ID.length);
// if (NODE_ID.length!=32)
// return Wb.format(value,'#,##0.00');
if (!value)
value = '0';
return (
'<a method="hrefMethod" style="color:grey" onclick="Wb.invoke(this,\'' + NODE_ID + '\',\'' + key + '\',\''+ key+'\');"href="javascript:void(0);">' + Ext.util.Format.number(value, '#,##0.00') + '</a>'
);
},
dataIndex: k
}
);
}
});
Cs.info(groups);
Wb.each(groups, function(k,v) {
columns_new.push(v);
// Cs.info('v',v);
});
app.dataGrid.reconfigure(app.dataGrid.store, columns_new);
setTimeout(app.lockTreeFirstColumn, 150);
setTimeout(function() {
var grid = app.dataGrid;
// var view = grid.getView();
// var viewEl = view.el;
// viewEl.on('click', function(event, target) {
// var cell = Ext.get(target).up('.x-grid-cell-first');
// if (cell) {
// var row = cell.up('.x-grid-row');
// var record = view.getRecord(row);
// if (record) {
// var indexId = record.get('INDEX_ID');
// var busi_month = app.panel1.queryById('I_BUSI_MONTH').getValue();
// var title = record.get('INDEX_NAME');
// Cs.info('点击的INDEX_ID:', indexId);
// Cs.info('月份:', busi_month);
// Cs.info('标题:', title);
// app.detail_window.show();
// app.detail_window.setTitle('标题');
// }
// }
// });
// 恢复树展开状态
var data = grid.getRootNode();
data.cascadeBy(function(child) {
if (child.data.PARENT_INDEX_ID == '-1') {
child.expand(false);
}
if (!(child.data.root)&& child.data.PARENT_INDEX_ID!='-1') {
child.collapse();
}
});
}, 100);