我的应用程序在Asp.net MVC3中,我添加了Jquery Datatable,它在默认加载时工作正常。但我想将自定义过滤添加到实现数据表的索引页面。 下面是示例代码,但这正是我使用Data-table实现索引View的方式。
var oTable1 = $('.My_Table_Class').dataTable({
"bServerSide": true,
"sAjaxSource": "/CityMaster/AjaxCityFill",
"bProcessing": true,
"sScrollY": "300px",
aaSorting: [[0, 'desc']],
"b$UI": true,
"bAutoWidth": true,
"sPaginationType": "full_numbers",
"sDom": '<"dtShowPer"l><"dtFilter"f><"#dataTables_filter_search_button"><"dtInfo"i><"dtPagination"p><"dtTables">rt<"dtInfo"i><"dtPagination"p><"F">',
"oLanguage": {
"sLengthMenu": "Display _MENU_ records per page",
"sZeroRecords": "Nothing found - sorry",
"sInfo": "Showing _START_ to _END_ of _TOTAL_ records",
"sInfoEmpty": "Showing 0 to 0 of 0 records",
"sInfoFiltered": ""
}
});
Above方法将从此查询中获取数据
"Select * from CityMaster"
索引视图上方会有选择过滤器,如CountryName,CityName,CountryCode 我想要实现的是:
我想将网址重新分配给 sAjaxSource ,这将从接受“CountryName”,“CityName”等参数的方法中获取数据 像这样
sAjaxSource": "/CityMaster/AjaxCityFillWithFilter?CountryName=India&CityName=Maharashtra,
以下是我尝试过的事情
1. var oSettings = oTable1.fnSettings();
oSettings.sAjaxSource = "/CityMaster/AjaxCityFillWithFilter? CountryName=India&CityName=Maharashtra;
2. oTable1.ajax.url("/CityMaster/AjaxCityFillWithFilter? CountryName=India&CityName=Maharashtra).load();
上述方法均无效。
答案 0 :(得分:0)
数据表中有一个属性,您可以在其中指定过滤器fnServerParams
:
"fnServerParams": function (aoData) {
aoData.push({ "name": "sBookTitle", "value": $("#Book_Title").val() });
aoData.push({ "name": "sAuthor", "value": $("#Author").val() });
},
假设您有一个Search
按钮,它将触发事件监听器中的搜索,只需重新绘制表格。
$("#searchBtn").on("click", function () {
var bookResultsTable = $('#bookResultsTable').DataTable();
bookResultsTable.draw();
});
这将自动调用传递过滤器值的ajax源。
在我的控制器中,您可以在请求参数中检索过滤器的值。
public ActionResult BookListHandler(JQueryDataTableParamModel param , FormCollection values)
{
var filterBookTitle = Request.Params[Constants.Book_Title_Param].Trim() ?? string.Empty;
var filterAuthor = Request.Params[Constants.Author_Param].Trim() ?? string.Empty;
... // rest of code here
}