Есть множество способов сделать это. Вот один Теперь для примера кода может быть важно отметить, что мои данные поступают в «aaData» как трехмерный объект, а не как двумерный массив. Я не знаю наверняка, что mDataProp или даже aoColumns доступны для 2D-данных.
2D ( не что я использую):
['column1', 'column2', 'column3'], ['moreColumn1', 'moreColumn2', 'moreColumn3] … etc …
3D ( это то, что я использую ):
[{'key1': 'column1', 'key2': 'column2', 'key3': 'column3'}, {'key1': 'moreColumn1', … etc …}]
Чтобы добавить столбец с виджетом, вам просто нужно использовать aoColumns и создать запись с mDataProp, равным нулю. Вы можете добавить к нему класс (как ловушку для функции JavaScript) и добавить любой другой контент по умолчанию (например, один или несколько значков редактирования, текст или любой другой):
"aoColumns": [
{
"mDataProp": null,
"bSortable": false,
"sClass": "editControl",
"sDefaultContent": '<span class="editIcon"></span>'
},
{
"mDataProp": "key1"
},
{
"mDataProp": "key2"
},
{
"mDataProp": "key3"
}
]
В этом примере значок добавляется как фоновое изображение класса span (CSS не показан). Существуют и другие способы достижения цели, и я согласен с более ранним постером, что вы можете просто отправить столбец «заполнитель». Это определенно будет работать с 2D-массивом. Если вы собираетесь использовать столбец-заполнитель, вы переходите на территорию "смешанных задач", но если она пуста, то это может быть полезным компромиссом.
Если это так, я бы добавил изображения и т. Д. В fnRowCallback.
"fnRowCallback": function( nRow, aData ) {
// let's imagine we are sending a URL in one of the columns and we want it to
// be stored in a clickable first column.
var theLink = aData[1];
$('td:eq(0)', nRow).addClass('clickable editIcon').attr('href', theLink);
return nRow;
}
Опять же, сам значок будет создан как фоновое изображение, в данном случае для элемента TD. Вы можете использовать .html()
и добавить любую разметку, какую захотите, что позволит вам вместо этого использовать элементы изображения. Это всего лишь пример ... не все браузеры поддерживают href как свойство td. Но, надеюсь, это даст правильную идею в качестве отправной точки.