您好!可以监听CellClick和CellChanged事件控制。
1. CellClick事件监听对列头中复选框的点击动作,将同列中viewport区域的复选框与列头复选框的勾选状态调整为一致。可参考如下代码:
- sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {
- console.log('cell click, args: ', args);
- if (args.sheetArea === GC.Spread.Sheets.SheetArea.colHeader) {
- sheet.suspendPaint();
- var tempValue = sheet.getValue(args.row, args.col, args.sheetArea);
- sheet.setValue(0, 0, !tempValue, GC.Spread.Sheets.SheetArea.colHeader);
- for (var i = 0; i < checkBoxRowCount; i++) {
- if (!sheet.getValue(i, 0, GC.Spread.Sheets.SheetArea.viewport) ||
- sheet.getValue(i, 0, GC.Spread.Sheets.SheetArea.viewport) === tempValue) {
- sheet.setValue(i, 0, !tempValue, GC.Spread.Sheets.SheetArea.viewport);
- }
- }
- sheet.resumePaint();
- }
- });
复制代码
2. CellChanged事件监听到对该列viewport区域中复选框的点击动作时,计数以判断列头复选框的勾选状态。可以参考如下代码:
- var flag = 0;
- sheet.bind(GC.Spread.Sheets.Events.CellChanged, function(e, args) {
- console.log('cell changed, args: ', args);
- if (sheet.getCellType(args.row, args.col) instanceof GC.Spread.Sheets.CellTypes.CheckBox) {
- if (args.sheetArea === GC.Spread.Sheets.SheetArea.viewport) {
- flag += sheet.getValue(args.row, args.col) ? 1 : -1;
- if (flag === checkBoxRowCount) {
- sheet.setValue(0, 0, true, GC.Spread.Sheets.SheetArea.colHeader);
- }
- if (flag < checkBoxRowCount) {
- if (sheet.getValue(0, 0, GC.Spread.Sheets.SheetArea.colHeader)) {
- sheet.setValue(0, 0, false, GC.Spread.Sheets.SheetArea.colHeader);
- }
- }
- }
- }
- });
复制代码
附上完整demo,供您参考。
|
|