В моем проекте MVC я пытаюсь использовать один Datatable
и свернуть строки для подробных данных, как показано на Creating an expandable master-details table (jQuery DataTables and ASP.NET MVC integration - Part IV). С другой стороны, я ищу аналогичные примеры master-detail
отношений для ASP.NET MVC
, но, к сожалению, у меня нет другого подходящего образца или учебника, по меньшей мере, из 50 страниц в Интернете. Есть ли подобные примеры, например that? Спасибо заранее ...Как создать JQuery Datatable Развертывание строк?
ответ
Я сделал аналогичную работу для одного из проектов. У меня была одна кнопка collapse/expand, которая работает для всей таблицы, и каждая строка имеет один значок разворота. вот мой код.
Примечание: Я переименовал переменные, чтобы скрыть свои данные, чтобы код мог работать не так, как есть.
function populateInstanceTable(tableData){
// Use to determine whether the child rows for all parents should be shown or hidden.
var SHOW_ALL_CHILDREN_FLAG = false;
var CHILD_DISPLAY_STATE_OVERRIDE = false;
var TABLE = $('#table_instance').DataTable(
{
'aaData': tableData,
'bProcessing': true,
'aoColumns': [
{
'sTitle': 'Column1',
'mData' : 'col1Data'
},
{
'sTitle': 'Column2',
'mData' : 'col2Data'
},
{
'sTitle': 'Column3',
'mData': 'col3Data'
},
{
'class': 'show-details',
'orderable': false,
'data': null,
'defaultContent': ''
}
]
}
);
function getDetailContent(details) {
return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">' +
'<tr>' +
'<td style="border:0px;">More Details:</td>'+
'<td style="text-align:left;max-width:100%;border:0px;">' + details + '</td>' +
'</tr>' +
'</table>';
}
//This function shows and hides multiple child rows with details, for following conditions
// when user clicks '+' or '-' icon
// When user uses search
// when user changes the number of entries per page
// when user navigates through the table
// @remark: With exception of expand all and collapse all events, the display state is retained for child rows
//that have been previously visited. Visited implies the parent row's show or hide details icon was individually clicked.
function collapseOrExpandRows() {
var numberOfVisibleParentRows = $('#table_instance tbody tr td.show-details').length;
for (var i = 0; i < numberOfVisibleParentRows; i++) {
var parentJQRow = $('.show-details').parents('tr').eq(i);
var parentDTRow = TABLE.row(parentJQRow);
// visited_child helps us retain the state of the child row display while
// searching, navigating, sorting or changing number of entries
// We always change the state of child if collapse all(- icon) or expand all(+ icon) is clicked.
if (parentJQRow.hasClass('visited_child') === false || CHILD_DISPLAY_STATE_OVERRIDE === true) {
if (SHOW_ALL_CHILDREN_FLAG === true) {
// We are populating a child row with a table because the parent datatable does not support colspan property.
parentDTRow.child(getDetailContent(parentDTRow.data().details)).show();
parentJQRow.addClass('shown');
}
else {
parentDTRow.child.hide();
parentJQRow.removeClass('shown');
}
}
}
}
//To display details, this event handler shows or hides a single child row
//when the show-details cell is clicked on the parent row
$('#table_instance tbody').on('click', 'td.show-details', function() {
var parentJQRow = $(this).parents('tr');
var parentDTRow = TABLE.row(parentJQRow);
//visited_child helps us retain the state of the child row display while
// searching, navigating, sorting or changing number of entries
parentJQRow.addClass('visited_child');
if (parentDTRow.child.isShown()) {
parentDTRow.child.hide();
parentJQRow.removeClass('shown');
}
else {
parentDTRow.child(getDetailContent(parentDTRow.data().details)).show();
parentJQRow.addClass('shown');
}
CHILD_DISPLAY_STATE_OVERRIDE = false;
});
// This event handler retains the state of the child row display
// when navigating through the table.
$('.dataTables_paginate').on('click', function() {
collapseOrExpandRows();
});
// This event handler hides child row for all visible parents.
$('.collapseall').on('click', function() {
CHILD_DISPLAY_STATE_OVERRIDE = true;
SHOW_ALL_CHILDREN_FLAG = false;
collapseOrExpandRows();
});
// This event handler shows child row of all visible parents.
$('.expandall').on('click', function() {
CHILD_DISPLAY_STATE_OVERRIDE = true;
SHOW_ALL_CHILDREN_FLAG = true;
collapseOrExpandRows();
});
// This event handler retains the state of the child row display
// when the user selects the number of entries to display in the table
$('div.dataTables_length select').on('change', function() {
collapseOrExpandRows();
});
// This event handler retains the state of the child row display
// when the user clicks on header to sort
$('thead > tr > th', '#table_instance').click(function() {
if ($(this).hasClass('show-details') === false) {
collapseOrExpandRows();
}
});
// This event handler retains the state of the child row display
// when the user searches
$('div.dataTables_filter input').keyup(function() {
collapseOrExpandRows();
});
}
Я приложил скриншот к вашей помощи.
Большое спасибо за ваш ответ и полезный пост. Насколько я понял, развернуть/свернуть можно только одну кнопку, и невозможно развернуть/свернуть строка в отдельности.Если это так, это не подходит для меня, но в любом случае, поскольку это полезный код, проголосовали + :) –
, так что есть две функции: есть одна кнопка, которая расширяет/сворачивает для всех строки также каждая строка имеет свой собственный значок расширения/свернуть. Эта функция делает indivdual expand/collapse '$ ('# table_instance tbody'). On ('click', 'td.show-details', function()' –
Хорошо, это действительно полезно. Большое спасибо ... –
Существует хороший пример на Datatables Blog, который также обладает прекрасным скользящим свойством. К сожалению, в Интернете не так много примеров в отношении этой проблемы, но я надеюсь, что этот пример полезен для вас.
Perfect! .. Он работает как шарм, и это много более благодарен за помощь ... –
- 1. Jquery DataTable перетаскивание строк
- 2. Как создать несколько строк на JSF DataTable
- 3. JQuery: Развертывание страниц в сервлетах не работает (Datatable)
- 4. Добавление строк в datatable с помощью jquery
- 5. Как создать datatable кнопки отправки?
- 6. Как создать динамический datatable?
- 7. Как создать sub DataTable из существующего DataTable
- 8. Как создать диаграмму строк из datatable C# winform
- 9. Получение значений столбцов выбранных строк/строк в jquery Datatable
- 10. Перетаскивание строк в виде строк datatable/datagrid?
- 11. как создать serveride datatable с codeigniter и datatables JQuery плагин
- 12. Как обновить jquery datatable
- 13. Как повысить производительность/скорость DOM jquery DataTable с 9999 строк?
- 14. Как добавить несколько строк в jQuery DataTable из строки html
- 15. Обновление прайлов datatable строк
- 16. Добавление пустых строк в DataTable
- 17. Извлечение всех из всех строк из jquery datatable
- 18. JQuery datatable row selection
- 19. MVC Как создать динамический DataTable?
- 20. Как создать datatable в C#?
- 21. Как создать DataTable в LINQ
- 22. JQuery DataTable
- 23. Предварительно Развертывание определенной строки в формате datatable
- 24. массива строк DataTable
- 25. Фильтрация строк в datatable
- 26. Как создать отдельный фильтр столбцов в jquery datatable
- 27. Как создать jquery DataTable из углового $ sce Сгенерированный HTML
- 28. Как создать DataTable с помощью jQuery в пользовательском интерфейсе MVC4?
- 29. Как создать контрольную сумму из объекта DataTable?
- 30. Как реализовать нумерацию строк в h: dataTable
** Кто-нибудь еще, кто использовал jQuery DataTable когда-либо раньше? ** –
Вам нужно разбить свои проблемы на более мелкие управляемые части. В вашем ответе вы просите полное решение/учебник. У вас нет времени, чтобы помочь вам в этом. Вы должны опубликовать код, который у вас есть, и сообщить нам, какое сообщение об ошибке вы получаете. Ваш вопрос должен конкретно касаться того, как справиться с этой ошибкой. Возможно, вам нужно будет задать пару вопросов, чтобы получить всю необходимую информацию, чтобы получить ваши свернутые строки. –
@ RafaelCichocki Спасибо, я знаю. Но я не хочу, чтобы кто-то еще написал здесь весь учебник, ** просто совет о подходящем источнике для использования JQuery Datatable Drill-down rows **. Таким образом, если кто-то еще когда-либо делал такое использование, это не слишком сложно для них дать совет для примера этого использования. –