Jquery 如何使用具有服务器端数据的子行初始化datatable?
我正在构建一个MVC应用程序,其中我正在将数据从控制器传递到视图中 我还使用jqueryjavascript库datatables来显示我的信息。我遇到的问题是,我想使用手风琴功能以隐藏状态显示我的附加信息属性列 问题是,每个示例都显示了如何使用ajax设置它来拉入数据 作为参考,我引入了使用的JavaScript代码。显然,我不能在JS脚本标记中使用Razor服务器端语法,但我需要知道如何执行与正在定义的format函数相同的操作:Jquery 如何使用具有服务器端数据的子行初始化datatable?,jquery,asp.net-mvc,datatables,Jquery,Asp.net Mvc,Datatables,我正在构建一个MVC应用程序,其中我正在将数据从控制器传递到视图中 我还使用jqueryjavascript库datatables来显示我的信息。我遇到的问题是,我想使用手风琴功能以隐藏状态显示我的附加信息属性列 问题是,每个示例都显示了如何使用ajax设置它来拉入数据 作为参考,我引入了使用的JavaScript代码。显然,我不能在JS脚本标记中使用Razor服务器端语法,但我需要知道如何执行与正在定义的format函数相同的操作: /* Formatting function for row
/* Formatting function for row details - modify as you need */
function format ( d ) {
// `d` is the original data object for the row
return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
'<tr>'+
'<td>Full name:</td>'+
'<td>'+d.name+'</td>'+
'</tr>'+
'<tr>'+
'<td>Extension number:</td>'+
'<td>'+d.extn+'</td>'+
'</tr>'+
'<tr>'+
'<td>Extra info:</td>'+
'<td>And any further details here (images etc)...</td>'+
'</tr>'+
'</table>';
}
$(document).ready(function() {
var table = $('#example').DataTable( {
"ajax": "../ajax/data/objects.txt",
"columns": [
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent": ''
},
{ "data": "name" },
{ "data": "position" },
{ "data": "office" },
{ "data": "salary" }
],
"order": [[1, 'asc']]
} );
// Add event listener for opening and closing details
$('#example tbody').on('click', 'td.details-control', function () {
var tr = $(this).closest('tr');
var row = table.row( tr );
if ( row.child.isShown() ) {
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
}
else {
// Open this row
row.child( format(row.data()) ).show();
tr.addClass('shown');
}
} );
} );
您可以在Javascript中100%使用Razor,但您不能引用可能用于呈现主行的foreach循环 您仍然需要JS来隐藏/显示子行,但类似于以下内容: @模型中的每个var项 { @项目名称 @项目.职位 @项目.办公室 @项目.薪金 @Html.DisplayNameFormodelItem=>item.Name: @项目名称 @Html.DisplayNameFormodelItem=>item.Extension: @项目.延期 @Html.DisplayNameFormodelItem=>item.Info: @项目信息 } 其中隐藏类集显示:无;另一个显示的类或其他东西将其设置为表行 单击td.details-control按钮时,使用JS切换子行的显示