2016-01-14 3 views
0

У меня есть DataTable сделано успешноНазначают различные атрибуты для каждого столбца в DataTables

Все, что я должен сделать, это назначить атрибуты столбцов этой таблицы.

У меня есть атрибуты в массиве, как показано ниже:

$attributes = array('7' => array(
    '17' => array(
    'class' => 'editable' 
) 
    '18' => array(
    'class' => 'custom_7_18 editable' 
) 
) 

enter image description here

где 17 и 18 являются идентификаторами fieldone и fieldtwo.

код 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 в DataTable, как он будет назначать тот же атрибут для всех <td> элемента. Есть ли какой-либо параметр для назначения другого атрибута?

Могу ли я назначить атрибуты из массива $attribute в dataTable?

Или есть способ присвоить атрибут функции обратного вызова? так что я могу использовать этот массив $attribute в php-файле, а 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

Что вы показываете из 'attributes' является PHP вар _dump. Где «атрибуты» клиентов? Как это выглядит? Откуда он исходит, как вы передаете его клиентам? – davidkonrad

+0

'attributes' вычисляется по самой функции обратного вызова. Если я могу установить что-то вроде того, что сообщает DT, чтобы назначить его как атрибут? Но на данный момент AFAIK это невозможно :( – jitendrapurohit

+0

Вы используете '$ .each (attributes, ...' - что такое 'атрибуты' - что он содержит? Откуда он? – davidkonrad

ответ

0

Я только установил это, хотел бы поделиться здесь:) -

Назначает атрибут для каждой ячейки обратного вызова самой функции, то есть, изменить значение ячейки, чтобы быть массивом, который содержит данные, а также атрибуты (например, для: класс)

//$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'] 
    ); 
    } 
} 

Настраивается для репликации на DataTable с использованием стандартных fnRowCallback:

//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; 
},