![](/img/trans.png)
[英]How to filter a C# DataTable in a ASP.NET MVC View on change of a select box option change
[英]how to show pageLength filter and print option both in datatable mvc c#
我想要在 mvc c# 中工作的數據表中的打印選項和 pageLength 過濾器。 我在互聯網上搜索但與此主題相關的我沒有找到任何內容。 實際上在 stackoverflow 中也是如此。 所以,我很驚訝這可能與否。 如果是,那么如何,如果不是,那么為什么?
我為打印和 pageLength 過濾器編碼,但它只顯示打印選項而不是 pageLength 過濾器選項,如果我刪除打印選項,那么它將顯示 pageLength 過濾器選項。 混淆為什么會發生這種情況?
這是我用於打印和 pageLength 過濾器的查看代碼
$(document).ready(function () {
// DataTable
var table = $("#dataGrid").DataTable({
//Report Export Start
dom: 'Bfrtip',
buttons: [
{
extend: 'print',
exportOptions: {
columns: [0, 1, 2]
},
className: 'btn btn-default btn-xs glyphicon glyphicon-print',
footer: true
}
],
//Report Export End
"scrollX": false, // scrolling horizontal
"bSort": false,
"bFilter": false,
"processing": true, // for show progress bar
"serverSide": true, // for process server side
"filter": true, // this is for disable filter (search box)
//"orderMulti": false, // for disable multiple column at once
"pageLength": 5,
"lengthMenu": [5, 10, 50, 100, 1000, 10000],
"ajax": {
"url": "/Ledger/LedgerList",
"type": "POST",
"datatype": "json",
"data": function (d) {
return $.extend({}, d, {
'SearchLedgerType': document.getElementById("search_ledgerType").value
});
}
},
"columnDefs":
[{
"targets": [2, 3],
"visible": false,
"searchable": true,
"orderable": false
}
],
"columns": [
{ "data": "id", "name": "Id", "autoWidth": true },
{ "data": "name", "name": "Name", "autoWidth": true },
{ "data": "address", "name": "Address", "autoWidth": true },
]
});
});
這是我的控制器,
[HttpPost]
public IActionResult LedgerList(Ledger ledger)
{
var draw = Request.Form["draw"];
var start = Request.Form["start"].ToString();
var length = Request.Form["length"].ToString();
var sortColumn = Request.Form["columns[" + Request.Form["order[0][column]"] + "][name]"];
var sortColumnDir = Request.Form["order[0][dir]"];
var searchValue = Request.Form["search[value]"];
//Paging Size (10,20,50,100)
int pageSize = length != null ? Convert.ToInt32(length) : 0;
int skip = start != null ? Convert.ToInt32(start) : 0;
int recordsTotal = 0;
// Getting all Customer data
var dataList = (from l in _Db.Ledger
select new Ledger
{
Id=l.Id,
Name = l.Name,
Address = l.Address,
}).ToList();
// filter data
if (ledger.SearchLedgerType != null)
dataList = dataList.Where(d => d.LedgerType.Trim() == ((LedgerType)Convert.ToInt32(ledger.SearchLedgerType)).ToString()).ToList();
//Sorting
if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDir)))
{
var propertyInfo = typeof(Ledger).GetProperty(sortColumn);
if (propertyInfo != null)
{
if (sortColumnDir == "asc")
dataList = dataList.OrderBy(x => propertyInfo.GetValue(x, null)).ToList();
else
dataList = dataList.OrderByDescending(x => propertyInfo.GetValue(x, null)).ToList();
}
}
//Search
if (!string.IsNullOrEmpty(searchValue))
dataList = dataList.Where(m => m.Name.ToLower().Contains(searchValue.ToString().ToLower())).ToList();
//total number of rows count
recordsTotal = dataList.Count();
//Paging
var data = dataList.Skip(skip).Take(pageSize).ToList();
//Returning Json Data
return Json(new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data });
}
現在,這是打印和 pageLength 過濾器的代碼,但在輸出中只是我得到了打印選項而不是 pageLength 選項以獲得更清晰的讓我們看看該輸出的圖像
如果我從上面的代碼中刪除打印代碼,即
dom: 'Bfrtip',
buttons: [
{
extend: 'print',
exportOptions: {
columns: [0, 1, 2]
},
className: 'btn btn-default btn-xs glyphicon glyphicon-print',
footer: true
}
],
然后我得到下面的圖像結果
請幫我解決這個問題。
謝謝你。
將dom: 'Bfrtip'
替換為dom: 'Blfrtip'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.