2012-01-19 3 views
0

Мы используем jQuery DataTables plug-in. Плагин кажется довольно нежестким. Мы уже работали над 2-мя главными проблемами и теперь сталкиваемся с третьим:DataTables - отображение специальных строк с разными ячейками и форматирование

В нашей таблице мы хотим отобразить специальную строку, которая не является объектом типа всех остальных. Он служит визуальным разделителем между строками выше и строками ниже. У него разное количество ячеек, другой формат и другой контент.

Wireframe

Мы используем шаблоны JQuery для отображения содержимого строки в сочетании с knockoutjs binding handler by cognitive shift. Там, кажется, не каким-либо образом настроить различные типы строк или что-нибудь в DataTables, так cogshift переопределяет fnRowCallback к поддержка шаблонов jQuery.

Способ, которым мы в настоящее время планируем решить эту проблему, заключается в добавлении «фиктивного» элемента в viewmodel, который имеет специальное свойство, например. «IsDummy()», чтобы определить, как его отобразить. В шаблоне JQuery мы оказываем ряд differntly, основанный на этом свойстве:

<script id="template" type="text/x-jquery-tmpl"> 
    {{if IsDummy()}} 
     <td colspan="5" style="background-color:yellow; text-align: center"> 
      Entries starting with ${StartLetter} 
     </td> 
    {{else}} 
     <td>${Id}</td><td>${Name}</td>... 
    {{/if}} 
</script> 

Однако это нарушит DataTables самого позднего при попытке разобраться, потому что он сохраняет все TD-s в 1-тусклом массиве и опирается на арифметику для извлечения правой ячейки на основе номера строки и столбца или в короткие сроки: все строки должны иметь одинаковое количество столбцов.

Это тот момент, когда я остановился и понял, насколько неудобны все эти хаки, и что должен быть лучший подход, или я могу вообще не пропускать функцию данных. - хотя я боюсь, что это не так ...

Может ли кто-нибудь дать мне руководство?

Update: В то же время я нашел еще больше вопросов:

  • Если нет никаких «реальных» записей в массиве, я хочу DataTable для отображения «не найдено никаких данных», то есть я должны динамически удалять фиктивный элемент, если все остальные элементы удалены, и добавьте его обратно после добавления новой «реальной» записи.
  • Резюме DataTables говорит: «Отображение 6 из 6 записей», если есть 5 «реальная» запись из-за фиктивную запись ...

ответ

3

Путь поздно к игре, но есть поддержка заголовка псевдо секции в настоящее время: http://datatables.net/release-datatables/examples/advanced_init/row_grouping.html

+0

Это замечательно! Звучит очень многообещающе, и поскольку это часть javascript, мы можем даже изменить ее настолько, насколько мы хотим удовлетворить наши требования. Попробуем a.s.a.p. – chiccodoro

1

Насколько я знаю Colspan в DataTables есть проблемы. Это не было поддержано, и я не хочу, если он сейчас поддерживается, посмотрите на это answer

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

+0

Да, это абсолютно правильно. Просто попробовал, чтобы каждая строка DID имела одинаковое количество столбцов (специальная строка объединяет 3 ячейки, а затем разделяет один на 3, чтобы исправить нужный номер), но это, в свою очередь, приводило к проблемам в заголовке. – chiccodoro

+0

Знаете ли вы, есть ли поддержка «специальных» строк или что-то вроде «заголовков разделов»? – chiccodoro

+0

@chiccodoro no idon't думаю, что есть поддержка для этого. Существует поддержка дополнительных данных строки ([здесь] (http://datatables.net/release-datatables/examples/api/row_details.html)) и поддержка фиксированных и информационных столбцов ([здесь] (http://datatables.net/release-datatables/examples/api/counter_column.html)). Вы можете использовать colspan в '' –

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^