несоответствие индекса после того, как столбец скрыт в Datatable - PullRequest
0 голосов
/ 17 марта 2019

Здравствуйте, я использую таблицу данных, и в соответствии с некоторой бизнес-логикой определенные столбцы в моей таблице показаны или скрыты, для этого я отправляю aoColumns как JSon со стороны Java, но проблема, с которой я сталкиваюсь, заключается в функциях 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

    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...