2016-01-28 3 views
0

Я работаю над приложением MVC, использующий DataTables (https://datatables.net/)Datatables: Как я могу установить селектор ячеек?

Я хочу, чтобы показать «Подтвердить» кнопку в последнем столбце, если значение столбцов PayableAmount и InvoiceAmount равно. Но если они не равны, кнопка «Подробности» должна быть показана

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

Найдено в этой статье: https://datatables.net/reference/type/cell-selector , но не знаете, как установить/использовать клеточно-селекторы ..

ответ

1

Если вы используете render функцию на columns массив для последней ячейки, как это:

var example = $("#example").DataTable({ 
    "columns": [ 
     null, 
     null, 
     null, { 
      "render": function(data, type, row) { 
       if (numeral(row[1]) > numeral(row[2])) { 
        return $("<button></button>", { 
         "text": "Details" 
        }).prop("outerHTML") 
       } else { 
        return $("<button></button>", { 
         "text": "Approve" 
        }).prop("outerHTML") 
       } 
      } 
     } 
    ] 
}); 

Он должен делать что-то вроде того, что вам нужно. Рабочий пример: here. В основном третья переменная, переданная в функцию рендеринга, представляет собой целое row, и в этом примере я использую numeral.js для анализа чисел в формате, отформатированных в валюте, их сравнения и возврата строки HTML в зависимости от того, больше ли сумма выставленных счетов превысила сумму Paid.

Надеюсь, что это поможет.

+0

Спасибо, что это работает отлично! (y) Его еще лучше, чем решение, которое я нашел: D – Bounty

+0

В случае, если кто-то хочет получить значение ячейки, это поможет решить эту проблему: - var table = $ ('# SupplierInvoice') .Таблица данных(); var rows = table.rows(). Data(); если (строки = NULL && rows.length> 0!) { для (вар Ровно = 0; Ровно Bounty