[ABI 5.2] 如何设置拼接后的单元格字体颜色,第一行是黑色,第2行是白色

907
5

zhouxm 数据达人Lv4

发表于2023-11-14 14:02

悬赏1

已解决

楼主
本帖最后由 zhouxm 于 2023-11-14 14:04 编辑

如图中1部分是2行单元格,每行显示不同的内容,且第1部分的上面行次字体颜色为黑色,下面行次%数字体颜色为白色,现把1部分中的2行内容合并成2部分中的1行数据中,其中2部分中的内容显示2行(一个单元格中换行),要求2部分中的1行是黑色字体,2行是白色字体,如何能实现

最近看过此主题的会员

wangbing

邻居门口晒花椒

esen_408VBWR3E6V9

ESENSOFT官方技术支持

王硕

chestnut

xuhongtao

张大猫

伶俐

爆汁

你好啊

最佳答案
//在脚本客户端中设置                     
   setTimeout(function() {
                                //设置表格的某一列的字体颜色,参数分别为表格代号,指定列(从0开始),字体颜色,第一行的颜色black
                                setColcolor("GRID7", 3, "black",1);
                                function setColcolor(grid, col, color,nonerow) {
                    debugger;
                                        var GRID7 = document.getElementById(grid.toUpperCase());
                                        var spans = GRID7.getElementsByTagName("span");
                                        var inspan = document.createElement("span");
                                        var collen = GRID7.getElementsByTagName("col").length;
                                        var rowlen = GRID7.getElementsByTagName("tr").length;
                                        var y = col + collen*nonerow;
                                        for (var i = 0; i < rowlen-nonerow; i++) {
                                                var str = spans[i + y].innerHTML;
                                                //获取第一行字符串
                        var fstrowstr = str.substr(0,str.indexOf('<br'));
                        console.log(fstrowstr);
                                                //获取第1行的长度
                        var firstrowlen = fstrowstr.length;
                                                var arr = str.split('');
                                                var len1 = arr.length;
                                                if (len1 !== 0) {
                                                        spans[i + y].appendChild(inspan);
                                                        addStrOfInspan(inspan);
                                                        //设置前两位字颜色
                                                        inspan.style.color = color;
                                                        var reg = new RegExp(".{1," + len1 + "}");
                                                        spans[i + y].innerHTML = spans[i + y].innerHTML.replace(/$/g, addStrAfterInspan(len1)).replace(reg, "");

                                                } else {
                                                        y = y - 1;
                                                }
                                                y = y + collen;
                                        }

                                        //添加内部span内容,firstrowlen=动态获取第一行的长度
                                        function addStrOfInspan(inspan) {
                                                var instr = "";
                                                for (var i = 0; i < firstrowlen; i++) {
                                                        instr += arr;
                                                }
                                                inspan.innerHTML = instr;
                                        }
                                        //将数组拼接成字符串
                                        function addStrAfterInspan(len) {
                                                var str = "";
                                                for (var i = firstrowlen; i < len; i++) {
                                                        str += arr;
                                                }
                                                //除了第1行字体之外的颜色
                                                return '<font color=blue>'+str+'</font>';
                                        }
                                }
                        }, 400)
5个回答

只看楼主

chestnut 数据领袖Lv6

发表于2023-11-15 11:54

只看该作者

取消 关注该作者的回复

沙发

报表中的数据是取值还是表达式?表元中的内容是怎么拼接的呢?

zhouxm 数据达人Lv4

发表于2023-11-15 13:39

只看该作者

取消 关注该作者的回复

板凳

chestnut 发表于 2023-11-15 11:54
报表中的数据是取值还是表达式?表元中的内容是怎么拼接的呢?

GRID1.A2^'; '^''^';'^round(GRID1.C2*100,2)^'%'   
其中A2是名称,C2是百分比   
然后使用显示表达式 self.value.SPLIT("\;").JOIN('\n') 进行换行

xuhongtao 数据小白Lv1

发表于2023-11-20 10:59

只看该作者

取消 关注该作者的回复

地板

本帖最后由 xuhongtao 于 2023-11-20 11:08 编辑

下面

xuhongtao 数据小白Lv1

发表于2023-11-14 14:02

只看该作者

取消 关注该作者的回复

5#

//在脚本客户端中设置                     
   setTimeout(function() {
                                //设置表格的某一列的字体颜色,参数分别为表格代号,指定列(从0开始),字体颜色,第一行的颜色black
                                setColcolor("GRID7", 3, "black",1);
                                function setColcolor(grid, col, color,nonerow) {
                    debugger;
                                        var GRID7 = document.getElementById(grid.toUpperCase());
                                        var spans = GRID7.getElementsByTagName("span");
                                        var inspan = document.createElement("span");
                                        var collen = GRID7.getElementsByTagName("col").length;
                                        var rowlen = GRID7.getElementsByTagName("tr").length;
                                        var y = col + collen*nonerow;
                                        for (var i = 0; i < rowlen-nonerow; i++) {
                                                var str = spans[i + y].innerHTML;
                                                //获取第一行字符串
                        var fstrowstr = str.substr(0,str.indexOf('<br'));
                        console.log(fstrowstr);
                                                //获取第1行的长度
                        var firstrowlen = fstrowstr.length;
                                                var arr = str.split('');
                                                var len1 = arr.length;
                                                if (len1 !== 0) {
                                                        spans[i + y].appendChild(inspan);
                                                        addStrOfInspan(inspan);
                                                        //设置前两位字颜色
                                                        inspan.style.color = color;
                                                        var reg = new RegExp(".{1," + len1 + "}");
                                                        spans[i + y].innerHTML = spans[i + y].innerHTML.replace(/$/g, addStrAfterInspan(len1)).replace(reg, "");

                                                } else {
                                                        y = y - 1;
                                                }
                                                y = y + collen;
                                        }

                                        //添加内部span内容,firstrowlen=动态获取第一行的长度
                                        function addStrOfInspan(inspan) {
                                                var instr = "";
                                                for (var i = 0; i < firstrowlen; i++) {
                                                        instr += arr;
                                                }
                                                inspan.innerHTML = instr;
                                        }
                                        //将数组拼接成字符串
                                        function addStrAfterInspan(len) {
                                                var str = "";
                                                for (var i = firstrowlen; i < len; i++) {
                                                        str += arr;
                                                }
                                                //除了第1行字体之外的颜色
                                                return '<font color=blue>'+str+'</font>';
                                        }
                                }
                        }, 400)

zhouxm 数据达人Lv4

发表于2023-11-22 17:28

只看该作者

取消 关注该作者的回复

6#

setTimeout(function() {
               //设置表格的某一行的字体颜色,参数分别为表格代号,行号(从1开始),第一行的颜色,第二行的颜色
        setRowColor("GRID1", 4,'black', 'white');
        function setRowColor(grid, rownum,color1,color2){
             var tds = $("div[id='"+grid+"'] > table > tbody > tr[row='"+rownum+"'] >td").each(function(){
                        var spancont = $(this).children("span").html();
                        //第一行   'br'代表换行
                         var fstrowstr = spancont .substr(0,spancont .indexOf('<br'));
                        //剩余内容
                         var scdrowstr = spancont .substr(spancont .indexOf('<br'));
                         $(this).children("span").html('<font color='+color1+'>'+fstrowstr +'</font>'+'<font color='+color2+'>'+scdrowstr +'</font>');
                });
             
        }
}, 1)

登录后可回答问题,请登录注册

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流