控件隐藏空行

4a8c6e4fe81873b3f01b8aa588bdd37.png

/*

 * 通过遍历表格每行的单元格进行单元格的拼接,来控制表格空行的隐藏

 * 隐藏的条件:同行里所有的数据列都是 空值/空字符串/0/0.00形式 即隐藏

 */

//获取表格tr对象

var trObj = $(".x-table tr");

//获取tr的行数

var rowsNum = trObj.length;

var hideFlag = false;//控制未查询时,按钮显示值不允许切换

//开始遍历单元格,从第二行开始(表头不遍历)--可根据需求自行修改

for(var i = 2; i < rowsNum; i++) {

    var td = trObj.eq(i).find("td");

    var trStrs = "";//用来拼接各行需要遍历的单元格

    //遍历tr中的对象td,从第二列开始----可根据需求自行修改

    for(var j = 3; j < td.length; j++) {

        //_val是每个单元格值

        var tdValue = td.eq(j).text();

        //去除空格

        tdValue = $.trim(tdValue);

        //判断是否是空,如果不为空弹出单元格值(可根据需要更改)

        if(tdValue!="" && tdValue!=0){

           //如果是td是0.0000格式,也可以用0来判断

           trStrs += tdValue;

        }

    }

    if(trStrs==null || trStrs=="" || trStrs==0){

       //隐藏空行或者0

       //alert("隐藏:::"+trStrs);       

       $("#r-"+i+"-0").toggle();

       hideFlag = true;//是否需要隐藏标志设为true

    }else{

       //非0 非空的 不隐藏

       //alert("展示:::"+trStrs);

    }

    

}

//点击按钮显示值切换(“隐藏空行”与“显示空行”切换)

var button = this.options.form.getWidgetByName("button0");

//alert(button.getValue());

if((button.getValue()=="隐藏空行") && hideFlag==true){

   button.setValue("显示空行");

}else{

   button.setValue("隐藏空行");

}

//buttonValue.setVisible(false);

//$("#fr-btn-BUTTON0").html("显示空行");//注意:控件名button0字母必须大写 这个也可以,但是value值不改变,只改变了页面显示的值,样式也改了

为什么我的控件里面已经写了这个JS,他出来的数据还是会包含有空行的

yzmXrTpA3762457 发布于 2022-6-2 13:45
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
luojian0323Lv7资深互助
发布于2022-6-2 14:03(编辑于 2022-6-2 19:59)

隐藏空行.gif

我判断 第9列,改了下面代码

for(var j = 8; j < td.length-1; j++) {

        //_val是每个单元格值

        var tdValue = td.eq(j).text();

        //去除空格

        tdValue = $.trim(tdValue);

        //判断是否是空,如果不为空弹出单元格值(可根据需要更改)

        if(tdValue!="" && tdValue!=0){

           //如果是td是0.0000格式,也可以用0来判断

           trStrs += tdValue;

        }

    }

其实可以不用循环的。如果只判断 一列的值的话,

如果 是判断连续的列需要加循环。

你自己看情况而定。我这里一共10列,所以后面写了j < td.length-1

---------------------------------------------------------------------------------------------------

更新回答:

/*

 * 通过遍历表格每行的单元格进行单元格的拼接,来控制表格空行的隐藏

 * 隐藏的条件:同行里所有的数据列都是 空值/空字符串/0/0.00形式 即隐藏

 */

//获取表格tr对象

var trObj = $(".x-table tr");

//获取tr的行数

var rowsNum = trObj.length;

var hideFlag = false;//控制未查询时,按钮显示值不允许切换

//开始遍历单元格,从第二行开始(表头不遍历)--可根据需求自行修改

for(var i = 2; i < rowsNum; i++) {

    var td = trObj.eq(i).find("td");

    var trStrs = "";//用来拼接各行需要遍历的单元格

        var tdValue = td.eq(3).text(); //当前行第4列单元格的值

        //去除空格

        tdValue = $.trim(tdValue);

        //判断是否是空,如果不为空弹出单元格值(可根据需要更改)

        if(tdValue!="" && tdValue!=0){

           //如果是td是0.0000格式,也可以用0来判断

           trStrs += tdValue;

        }

    if(trStrs==null || trStrs=="" || trStrs==0){

       //隐藏空行或者0

       //alert("隐藏:::"+trStrs);       

       $("#r-"+i+"-0").toggle();

       hideFlag = true;//是否需要隐藏标志设为true

    }else{

       //非0 非空的 不隐藏

       //alert("展示:::"+trStrs);

    }

    

}

//点击按钮显示值切换(“隐藏空行”与“显示空行”切换)

var button = this.options.form.getWidgetByName("button0");

//alert(button.getValue());

if((button.getValue()=="隐藏空行") && hideFlag==true){

   button.setValue("显示空行");

}else{

   button.setValue("隐藏空行");

}

//buttonValue.setVisible(false);

//$("#fr-btn-BUTTON0").html("显示空行");

最佳回答
0
qiqits1984Lv6中级互助
发布于2022-6-2 13:53(编辑于 2022-6-2 13:58)

没太看懂,隐藏行加一个条件属性   len(单元格)<=0 or 单元格内容 = “” or 单元格格内容 = 0 不行吗?

写的那么累呢?

你的js 里好象没有写 控制元素隐藏的条件   $(".id").hide();      $(".id").show();

最佳回答
0
996433090@qq.coLv6初级互助
发布于2022-6-3 17:51
搞得有点复杂了,有更简单的方法
  • 3关注人数
  • 473浏览人数
  • 最后回答于:2022-6-3 17:51
    请选择关闭问题的原因
    确定 取消
    返回顶部