uniDbgrid单元格合并

欢迎加入全网最大Delphi 技术交流群 682628230

uniGui开发Web时,遇到uniDBgrid单元格合并需求,在官网找到解决方案。

1. UniDBGrid -> ClienEvent -> UniEvents -> 函数 beforeInit:

function beforeInit(sender, config)
{
config.updateRowSpan = function() {
var columns = sender.getColumns(),
view = sender.getView(),
store = sender.getStore(),
rowCount = store.getCount(),

colIndx = 1; // second column for example
column = columns[colIndx],
dataIndex = column.dataIndex,

spanCell = null,
spanCount = null;
spanValue = null;

for (var row = 0; row < rowCount; ++row) {
var cell = view.getCellByPosition({ row: row, column: colIndx }).dom,
record = store.getAt(row),
value = record.get(dataIndex);

if (spanValue != value) {
if (spanCell !== null) {
spanCell.rowSpan = spanCount;
}

//Ext.fly(cell).setStyle('display', '');
Ext.fly(cell).query('.x-grid-cell-inner')[0].style.display='';
spanCell = cell;
spanCount = 1;
spanValue = value;
} else {
spanCount++;
//Ext.fly(cell).setStyle('display', 'none');
Ext.fly(cell).query('.x-grid-cell-inner')[0].style.display='none';
}
}

if (spanCell !== null) {
spanCell.rowSpan = spanCount;
}
};
}

2. UniDBGrid -> ClienEvent -> UniEvents -> 函数afterCreate:

function afterCreate(sender)
{
sender.getView().on('refresh', sender.updateRowSpan, sender);
}

如果更改数据集,例如:append record 或 delete record ,则 UnidbGrid 是错误的!
你怎么做?!
修改后可以尝试使用此代码
UniSession.AddJS(UniDBGrid1.JSName + '.view.refresh();');
UniSession.AddJS(UniDBGrid2.JSName + '.view.beforeInit();');
UniSession.AddJS(UniDBGrid2.JSName + '.view.repaint();');

例如:
md01.FDQ_jiageZB.edit;
md01.FDQ_jiageZB.FieldByName('grp_par_parname') 的AsString := trim(UniComboBox1.Text);
md01.FDQ_jiageZB.FieldByName('grp_parname').AsString := trim(UniComboBox2.Text) ;
md01.FDQ_jiageZB.FieldByName('grp_name') 的AsString := trim(Uniedit1.Text);
md01.FDQ_jiageZB.FieldByName('grp_price01') 的AsFloat := strtofloat(Uniedit2.Text) ;
md01.FDQ_jiageZB.FieldByName('grp_price02') 的AsFloat := strtofloat(Uniedit3.Text) ;
md01.FDQ_jiageZB.FieldByName('grp_price03') 的AsFloat := strtofloat(Uniedit4.Text) ;
md01.FDQ_jiageZB.post ;
UniSession.AddJS(UniDBGrid2.JSName + '.view.beforeInit();');
UniSession.AddJS(UniDBGrid2.JSName + '.view.repaint();');
UniSession.AddJS(UniDBGrid2.JSName + '.view.refresh();');

 

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享