簡體   English   中英

如何在數據表mvc c#中顯示pageLength過濾器和打印選項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM