您好,
SpreadJS的样式有单元格样式、行列样式。对于列样式,新增行是会继承的。
通过您提供的ssjson测试来看您是设置了单元格样式,所以新增行的数据没有继承前面单元格的样式。
因此您可以将原单元格样式设置为列样式,再次测试下。
示例代码:
sheet.setStyle(-1, 1, style, GC.Spread.Sheets.SheetArea.viewport);
具体请参考学习指南:https://demo.grapecity.com.cn/sp ... /basic-style/purejs
或者您可以在每次setDataSource之后,对表格区域的单元格样式拷贝他上一行的样式来解决该问题,以下是按照这个想法实现的一个代码:
- var len = sheet.tables.all().length;
- for (var i = 0; i < len; i++) {
- sheet.tables.all()[i].expandBoundRows(true); // 设置循序拓展
- }
- var tmp = {
- lhzc: [
- {
- zh: "test",
- side: "test",
- describ: "test",
- path: "test",
- clyj: "test",
- cljg: "test",
- },
- {
- zh: "test",
- side: "test",
- describ: "test",
- path: "test",
- clyj: "test",
- cljg: "test",
- },
- {
- zh: "test",
- side: "test",
- describ: "test",
- path: "test",
- clyj: "test",
- cljg: "test",
- },
- {
- zh: "test",
- side: "test",
- describ: "test",
- path: "test",
- clyj: "test",
- cljg: "test",
- },
- ],
- };
- sheet.suspendPaint(); // 挂起绘制
- var source = new GC.Spread.Sheets.Bindings.CellBindingSource(tmp);
- sheet.setDataSource(source);
- // 拷贝样式
- function copyTableStyle(sheet, table) {
- let range = table.dataRange();
- for (let i = 0; i < range.rowCount - 1; i++) {
- for (let j = 0; j < sheet.getColumnCount(); j++) {
- sheet.copyTo(
- range.row + i,
- j,
- range.row + i + 1,
- j,
- 1,
- 1,
- GC.Spread.Sheets.CopyToOptions.style
- );
- }
- }
- }
- for (var i = 0; i < len; i++) {
- copyTableStyle(sheet, sheet.tables.all()[i]); // 轮询每个表格,并让拓展区域拷贝上一行的样式
- }
- sheet.resumePaint(); // 恢复绘制
复制代码 |