背景:列头自定义排序按钮我们之前有过实现,地址:https://demo.grapecity.com.cn/SpreadJS/cdn/extendedExample/#/demos/columnHeaderSort
但在复杂表头的情况下(含合并单元格、不定行高时),排序按钮的尺寸会变得过大或产生位移,
应某些客户要求,改进了此示例。
核心代码(完整示例见附件):
- SortHearderCellType.prototype.paint = function (ctx, value, x, y, width, height, style, context) {
- spreadNS.CellTypes.ColumnHeader.prototype.paint.apply(this, arguments);
- var margin = 3;
- var gap = 1;
- var color = "red";
- var size = 20;
- var tag = context.sheet.getTag(context.row, context.col, context.sheetArea);
- ctx.save();
- if(!tag || tag && tag.ascending){
- ctx.beginPath();
- ctx.fillStyle = color;
- ctx.moveTo(x+width-size+margin,y+height/2-gap );
- ctx.lineTo(x+width-margin,y+height/2-gap);
- ctx.lineTo(x+width-size/2,y + (height - size)/2 + margin);
- ctx.closePath();
- ctx.fill();
- }
- if(!tag || tag && !tag.ascending){
- ctx.beginPath();
- ctx.fillStyle = color;
- ctx.moveTo(x+width-size+margin,y+height/2+gap);
- ctx.lineTo(x+width-margin,y+height/2+gap);
- ctx.lineTo(x+width-size/2,y+(height+size)/2 - margin);
- ctx.closePath();
- ctx.fill();
- }
- ctx.restore();
- };
复制代码
|
|