列在数据表中隐藏后索引不匹配

时间:2019-03-17 12:20:58

标签: datatable datatables

您好,我正在使用数据表,并且根据某些业务逻辑,表中的某些列已显示或隐藏,因为我是从Java端将aoColumns作为JSon发送的,但是我面临的问题是rowCallBack函数 我正在处理隐藏列时未匹配的索引上的列

这是我操作列的方式:

$('td:eq(0)',nRow).html(“” + nameTrimmed +“”);

我的猜测是索引中不包含隐藏列,而rowCallBack只是操作该索引上可见的任何列

我不能为每种情况编写不同的rowCallBack来保持通用性 有什么方法可以将隐藏列包括在索引计数中? 或者可以通过除索引之外的其他方式修改列。

这是代码

$('#myTable').DataTable({
        "dom": 't<"pagecontrol"lip>',
        "bJQueryUI": true,
        "sPaginationType": "simple",
        "bServerSide": true,
        "sAjaxSource": "${ctx}/getData?",
        "bProcessing": true,
        "oLanguage": 
          {
              "sInfo": "<fmt:message key="DataTable.key.DT_SHOWING_ENTRIES" />",
              "sInfoEmpty": "<fmt:message key="DataTable.key.DT_SHOWING_ENTRIES_EMPTY" />",
              "oPaginate": 
              {
                "sNext": '<i class="fa fa-caret-right"></i>',
                  "sLast": '<<',
                  "sFirst": '>>',
                  "sPrevious": '<i class="fa fa-caret-left"></i>'
              }
          },
         "lengthMenu": [[50, 100, 150, 200], [50, 100, 150, 200]],
        "rowCallback": function(  nRow, dtoObj, iDisplayIndex, iDisplayIndexFull ) {
            if  (dtoObj.firstName != '' && !showDownloadButton)   {
                $("#participantDownloadButton").removeClass('hide');
                showDownloadButton = true;
            }
            if(searchStringCount == dtoObj.searchStringCounter || dtoObj.searchStringCounter == 0) {
                var name = dtoObj.firstName +" "+ dtoObj.lastName;
                var nameTrimmed = trimStringByCharacters(name, 25);
                $('td:eq(0)', nRow).html("<label title='"+name.trim()+"'>"+nameTrimmed+ "</label>");


                //column 2 email
                if(dtoObj.email!='') {
                    var email = trimStringByCharacters(dtoObj.email,20) ;
                    $('td:eq(1)', nRow).html("<label title='" + email + "'>" + email + "</label>");
                }else{
                    $('td:eq(1)', nRow).html("");
                }

                //column 3 List name
                var listName = dtoObj.eligibilityListName;
                var listNameTrimmed = "";
                if(listName!=null) {
                    listNameTrimmed = trimStringByCharacters(listName, 20);
                }
                $('td:eq(2)', nRow).html("<label title='"+listName+"'>"+listNameTrimmed+ "</label>");

                var packageLevel = dtoObj.packageLevel;
                var packageLevelTrimmed = trimStringByCharacters(packageLevel, 15);
                $('td:eq(3)', nRow).html("<label title='"+packageLevel+"' data-participant-id='"+dtoObj.userId+"'>"+packageLevelTrimmed+ "</label>");
                var durationUnit ='<fmt:message key="reports.filter.months"/>';
                if (dtoObj.packageDuration == 1) {
                    durationUnit = '<fmt:message key="reports.filter.month"/>';
                }
                $('td:eq(4)', nRow).html(dtoObj.packageDuration +" "+ durationUnit);

                // Add icons before status
                var status = dtoObj.status;
                var iconLink = getIconLinkByStatus(status);
                // Add icons ends

                if(dtoObj.status != null) {
                    $('td:eq(6)', nRow).html(iconLink + dtoObj.status);
                } else {
                    $('td:eq(6)', nRow).html("");
                }
            }

         },
                 "drawCallback": function() {
                     $(".dataTables_wrapper").children(".pagecontrol").find("#participantsTable_length label").contents().eq(0).replaceWith('<fmt:message key="rows.per.page"/>  &nbsp;&nbsp;');
                     $("#participantsTable").find(".dataTables_empty").html('<fmt:message key="no.data.in.table"/>');

                     //Code to diaply participant details view
                     $('#participantsTable tbody tr').on('click',function () {
                         var $tds = $(this).find('td');
                         var userId =  $tds.eq(2).find('label').attr("data-participant-id");;
                         var status =  $tds.eq(5).text(); 
                         var listName =  $tds.eq(1).text();
                         showParticipantDetails(userId, status, listName);
                     });
                },
         "aoColumns": columnData //coming from server side

    });

0 个答案:

没有答案