Кнопка «Скрыть» из последней строки в таблице данных - JQuery - PullRequest
0 голосов
/ 28 февраля 2019

Я новичок в DataTable и борюсь.В моем последнем столбце у меня есть кнопка «Удалить», но я хочу hide это для «Только последней строки».

Проблема, с которой я столкнулся, заключается в том, что я борюсь, на самом деле нетИдея о том, как идентифицировать последнюю строку.

Я думал, что приведенный ниже код мог бы сработать, чтобы вернуть Data, но это не так.

var rowData = $('#existingRulesDataTable').DataTable().rows('.row:last' ).data();

Также попытался

var rowData = $('#existingRulesDataTable').rows( '.row:last' ).data();

Ниже приведена часть Data и некоторых других функций, которые я выполняю, когда rows заполнен Data

"columns": [                                                        // Display JSON data in table
                { "data": "position" },
                { "data": "startTime" },
                { "data": "endTime" },
                { "data": "selectedDays" },
                { "data": "selectedDates" },
                { "data": "selectedMonths" },
                { "data": "timeRange" },
                {
                    "data": null,
                    "render": function (data) {
                        if (buttonclicked == 'Modify') {                        // Displays the radio button when 'Mod' clicked
                            return  '<label class="c-radio" style="margin-bottom: 0px">'
                                +   '<input type="radio" name="existingRuleActionRadioButton" value="option1">'
                                +       '<span class="fa fa-check"></span>'
                                +   '</label>';
                        } else if (buttonclicked == 'Delete') {                 // Displays the delete button when 'Del' clicked
                            return '<button name="deleteRuleButton" class="btn btn-danger" id="' + data.position + '">'
                                + '<i class="fa fa-trash-o" style="font-size: large"></i>'
                                + '</button>';
                        } else {
                            return ''; // Needed for the 'Add' button click
                        }
                    }
                },
            ],
            "createdRow": function (row, data, dataIndex) {
                if (data.startTime == 'Anytime') {
                    $('td:eq(1)', row).attr('colspan', 2).css('text-align', 'center').html('All day');  // Adds COLSPAN attribute, centers the wording and changes it from 'Anytime'
                    $('td:eq(2)', row).css('display', 'none');                                          // Hides cell next to the cell with COLSPAN attribute
                }

                if (data.timeRange == '-w') {
                    $('td:eq(6)', row).html('Working hours');          // Changes text returned by JSON if '-w'
                } else if (data.timeRange == '-oo') {
                    $('td:eq(6)', row).html('Out of office hours');    // Changes text returned by JSON if '-oo'
                }

                var rowData = $('#existingRulesDataTable').DataTable().rows('.row:last' ).data();
                //var rowData = $('#existingRulesDataTable').rows( '.row:last' ).data();

                alert('rowData: ' + rowData.position)
            },

Кнопка, которую я хочу скрыть, - эточасть в columns

 return '<button name="deleteRuleButton"

Мне просто нужно, чтобы button было hidden для последней строки

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете использовать CSS, чтобы всегда скрывать кнопку последней строки, это избавляет вас от необходимости вызывать любой дополнительный javascript в нужное время.

#tableId tr:last-child button

Если у вас имеется более одной кнопки на последнейв строке, затем вы можете отождествить его, например, с .btn.btn-danger или дать ему более явный класс, или использовать [name=deleteRuleButton]

Пример с использованием CSS:

#existingRulesDataTable tr:last-child button {    
  display:none;
}
<table id='existingRulesDataTable'>
 <tbody>
  <tr><td>Row 1</td><td><button>del</button></td></tr>
  <tr><td>Row 2</td><td><button>del</button></td></tr>
  <tr><td>Row 3</td><td><button>del</button></td></tr>
 </tbody>
</table>
0 голосов
/ 28 февраля 2019

Используйте tr:last, чтобы найти кнопку с name attribute и скрыть эту кнопку.

$('#existingRulesDataTable tr:last').find("[name='deleteRuleButton']").hide(); //or you may use id or class when using find

Примечание: Вы должны вызывать это после рендеринга данных.

Отредактируйте согласно комментарию:

Вы можете использовать пользовательскую функцию для расширения datatbale функциональности по умолчанию.Проверьте, последняя ли это страница или нет, и если это последняя страница, примените ваше условие.

$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings ) {
  return {
    "iStart":         oSettings._iDisplayStart,
    "iEnd":           oSettings.fnDisplayEnd(),
    "iLength":        oSettings._iDisplayLength,
    "iTotal":         oSettings.fnRecordsTotal(),
    "iFilteredTotal": oSettings.fnRecordsDisplay(),
    "iPage":          Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
    "iTotalPages":    Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
  };
}

И позвоните, как:

$.extend(true, $.fn.dataTable.defaults, {
  "fncheckPage": function() {
    var Page = this.fnPagingInfo().iPage;
    if ((+Page + +1) == this.fnPagingInfo().iTotalPages)
      $('#existingRulesDataTable tr:last').find("[name='deleteRuleButton']").hide();
  }
});

Проверка кода для последней страницы с это так ответ и изменено в соответствии с вашим состоянием.

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