找回密码
 立即注册

QQ登录

只需一步,快速开始

Hi7t_

注册会员

6

主题

23

帖子

73

积分

注册会员

积分
73
Hi7t_
注册会员   /  发表于:2016-4-18 16:59  /   查看:6572  /  回复:8
1.下拉单选框我在
var combo = new spreadNS.ComboBoxCellType();
var SingleSelectJson = '[';
for (var x = 0; x < items1.length; x++) {
         SingleSelectJson += "{ text: '" + items1[x].replace("\"", "\"") + "', value: '" + items1[x].replace("\"", "\"") + "' },";
}
SingleSelectJson = SingleSelectJson.substring(0, SingleSelectJson.length - 1);
SingleSelectJson += ']';
}
var point1 = Cell2Point(cellId);                                          
combo.items(SingleSelectJson).editorValueType(spreadNS.EditorValueType.Text);
sheet.getCell(point1[1], point1[0], spreadNS.SheetArea.viewport).cellType(combo);  
//之后我设置次单元格的格式  其中有一个是换行
sheet.getCell(point1[1], point1[0]).wordWrap(true);
sheet.getCell(point1[1], point1[0]).locked(false);
但效果是   自动换行失效 如图
2. 第二个图片是一个文本展示,我自定义函数写的文本,用chrome 的 console.log()打印出来没有换行“GB/T 1596-2005《用于水泥和混凝土中的粉煤灰》,GB/T 18736-2002《高强高性能混凝土用矿物外加剂》,TB10424-2010 《铁路混凝土工程施工质量验收标准》” ,但是直接显示出来的话貌似自动把空格转换成了换行符。




QQ截图20160418164033.png
QQ截图20160418164415.png

8 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-19 09:49:17
沙发
1. comboxcell 不支持换行。
2. 您设置.wordWrap(false)了吗,如果是普通单元格,设置后是不换行的。如果不行,发一个简单dome html 页面过来。
回复 使用道具 举报
Hi7t_
注册会员   /  发表于:2016-4-20 12:18:44
板凳
dexteryao 发表于 2016-4-19 09:49
1. comboxcell 不支持换行。
2. 您设置.wordWrap(false)了吗,如果是普通单元格,设置后是不换行的。如果 ...

1.怎样支持换行?我们业务需要在单元格不改变大小,字体大小不变的情况下,容纳下拉框所选的内容。
2.您可能没明白我的意思,如图所示,他自动换行了。我设置的wordWrap(true),但是换行的效果并不理想。你看单元格内容,如 “GB/T 1596-2005”  在 ”/T“和 “1596”之间仅仅是个空格,但是展现出来的 “GB/T 择了一行 1596 ” ,这是什么原因?
回复 使用道具 举报
Hi7t_
注册会员   /  发表于:2016-4-20 12:25:19
地板
dexteryao 发表于 2016-4-19 09:49
1. comboxcell 不支持换行。
2. 您设置.wordWrap(false)了吗,如果是普通单元格,设置后是不换行的。如果 ...

关于问题2,我写了个小demo 您可以运行下看下区别:
       $(document).ready(function () {
            var spread = new GcSpread.Sheets.Spread(document.getElementById("ss"));
            var spreadNS = GcSpread.Sheets;
            var sheet = spread.getSheet(0);
            sheet.isPaintSuspended(true);
            sheet.getCell(1,1).wordWrap(true);
            //GB/T和 1596-2005之间有空格
            sheet.setValue(1, 1, 'GB/T 1596-2005testtesttesttesttesttest');
            //GB/T和 1596-2005之间没有空格  
            sheet.getCell(2,2).wordWrap(true);
            sheet.setValue(2, 2, 'GB/T1596-2005testtesttesttesttesttest');
            sheet.isPaintSuspended(false);         
        });
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-20 14:19:49
5#
1. 默认的comboBox是不支持换行的,如果真的要实现需要就需要自定义单元格,然后paint的时候换行
自定义单元格可以参考 http://blog.gcpowertools.com.cn/ ... toCompleteCell.aspxhttp://demo.gcpowertools.com.cn/ ... ples/customCellType
2. 这个是产品间处理机制的差异,spread 优先保证单词的完整性,有空格就认为后面是一个单词,当前行显示不下,换行后能尽可能的让单词完整展示。如果想要更改工作量比较大,暂时没有计划。
回复 使用道具 举报
Hi7t_
注册会员   /  发表于:2016-4-20 16:17:09
6#
dexteryao 发表于 2016-4-20 14:19
1. 默认的comboBox是不支持换行的,如果真的要实现需要就需要自定义单元格,然后paint的时候换行
自定义单 ...

弄个下拉树 自定义控件  下拉框 自定义控件 日期选择 自定义控件 多选框  自定义控件。。越用越揪心。。问题2这个,你告诉我没计划。我这遇到了怎么办?总不能就那样显示吧?你要是用户你会感觉那种显示好看么?我还是希望你们能给解决下。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-20 17:35:45
7#
问题1,我已经帮您写好了一个Demo,满足您的需求。
  1.       function WordWrapComboBoxCellType() {
  2.             GcSpread.Sheets.ComboBoxCellType.apply(this);
  3.         }
  4.         WordWrapComboBoxCellType.prototype = new GcSpread.Sheets.ComboBoxCellType();
  5.         WordWrapComboBoxCellType.prototype.paintValue = function(ctx, value, x, y, w, h, style, options)
  6.                 {
  7.                     var btnWidth = 17,
  8.                         txtWidth = Math.max(0, w - btnWidth - 1);
  9.                     if (style.hAlign === 3)
  10.                     {
  11.                         style.hAlign = 0
  12.                     }
  13.                     if (txtWidth > 0 && h > 0)
  14.                     {
  15.                         GcSpread.Sheets.BaseCellType.prototype.paintValue.call(this, ctx, this.getText(value, options), x, y, txtWidth, h, style, options)
  16.                     }
  17.                     ctx.save();
  18.                     if (btnWidth > w || btnWidth > h)
  19.                     {
  20.                         ctx.rect(x, y, w, h);
  21.                         ctx.clip()
  22.                     }
  23.                     ctx.beginPath();
  24.                     ctx.beginPath();
  25.                     ctx.lineWidth = 2;
  26.                     ctx.fillStyle = "#000000";
  27.                     ctx.moveTo(x + w - btnWidth + 4, y + (h - 2) / 2 - 2.5);
  28.                     ctx.lineTo(x + w - btnWidth + 7, y + (h - 2) / 2 + 3.5);
  29.                     ctx.lineTo(x + w - btnWidth + 10, y + (h - 2) / 2 - 2.5);
  30.                     ctx.fill();
  31.                     ctx.restore()
  32.                 };
复制代码

问题2.我也特别理解您的需求,我已经需求建议产品组可以在未来支持。具体是否能作为未来的新功能,是需要全球产品经理根据优先级来设定开发的。 我这边尽量帮您争取。

关于您说自定义控件的问题,spread的定位是一款表格控件,基本功能和Excel保持一致,同时提供了很高的拓展性帮助用户满足各自不同需求。我们这边在不停丰富各种自定义控件帮助用户满足自己需求。
回复 使用道具 举报
Hi7t_
注册会员   /  发表于:2016-4-20 17:53:27
8#
dexteryao 发表于 2016-4-20 17:35
问题1,我已经帮您写好了一个Demo,满足您的需求。
问题2.我也特别理解您的需求,我已经需求建议产品组可 ...

您建议产品组就好,我想要听到的就是这个,起码你要给我一个希望,也许下个版本可以修复这个问题,这样我不至于太失落。。谢谢。。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-20 18:12:24
9#
不好意思,之前没有说清楚,有问题您尽管发帖,我们这边解决不了的都会反馈给产品组的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部