我已成功完成dataTable
我所要做的就是将属性分配给此表的列。
我在数组中有如下所示的属性:
$attributes = array('7' => array(
'17' => array(
'class' => 'editable'
)
'18' => array(
'class' => 'custom_7_18 editable'
)
)
其中17
和18
是fieldone
和fieldtwo
的ID。
dataTable的代码
$('table.crm-multifield-selector').dataTable({
"bProcessing": true,
"asStripClasses" : [ "odd-row", "even-row" ],
"sPaginationType": "full_numbers",
"sDom" : '<"crm-datatable-pager-top"lfp>rt<"crm-datatable-pager-bottom"ip>',
"bServerSide": true,
"bSort" : false,
"sAjaxSource": sourceUrl,
});
我无法在数据表中使用sClass
,因为它会为所有<td>
元素分配相同的属性。是否有任何param分配不同的属性?
我可以将$attribute
数组中的属性分配给dataTable吗?
或者有没有办法从回调函数中分配属性?这样我就可以在php文件中使用这个$attribute
数组,并且dataTable每次绘制一行时都会分配这个属性吗?
我试过这个 -
"fnCreatedRow": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
$.each(attributes, function(index, item) {
//as the number of column can be changed, I can't give
//hardcoded values as I found during searching like
$('td:eq(2)', nRow).addClass('editable');
});
}
有没有人遇到过这样的情况?
答案 0 :(得分:0)
我刚刚解决了这个问题,想在这里分享:) -
为回调函数本身中的每个单元格分配属性,即将单元格值更改为包含数据的数组以及属性(例如:class)
//$value is the array sent to dataTable
foreach ($value as $fieldId => &$fieldName) {
if (!empty($attributes[$fieldId][$id]['class'])) {
//change the fieldName to array containing the attributes and the data part
$fieldName = array(
'data' => $fieldName,
// as I said in the question, I had $attributes array for the fields ids
'fieldClass' => $attributes[$fieldId][$id]['class']
);
}
}
调整此项以使用标准fnRowCallback
复制dataTable:
//Add class attributes to cells
"fnRowCallback": function(nRow, aData) {
// iterate through each row
$('td', nRow).each(function(index, element) {
if (typeof aData[index]=='object') {
if (typeof aData[index].fieldClass != 'undefined') {
$(element).addClass(aData[index].fieldClass);
}
if (typeof aData[index].data != 'undefined') {
$(element).html(aData[index].data);
}
}
});
return nRow;
},