使用jquery datatable进行服务器端处理,包括分页、筛选和搜索

使用jquery datatable进行服务器端处理,包括分页、筛选和搜索,jquery,asp.net-mvc,datatables,Jquery,Asp.net Mvc,Datatables,我需要为我的asp.NETMVC(C#)应用程序使用jquery datatable服务器端处理() 我的应用程序有数千条记录要作为列表显示在表中。我使用jQueryDataTable来启用分页、筛选和搜索 对于jquery datatable服务器端处理,有什么好的参考/文章可以与asp.net mvc(C#)一起使用吗?2链接: 这是一个示例项目,您可以下载它并通过调试了解DataTables如何与.NETMVC一起工作。 它帮助我在这个话题上站稳了脚跟。我建议大家大家好,这个链接可能会

我需要为我的asp.NETMVC(C#)应用程序使用jquery datatable服务器端处理()

我的应用程序有数千条记录要作为列表显示在表中。我使用jQueryDataTable来启用分页、筛选和搜索

对于jquery datatable服务器端处理,有什么好的参考/文章可以与asp.net mvc(C#)一起使用吗?

2链接:

这是一个示例项目,您可以下载它并通过调试了解DataTables如何与.NETMVC一起工作。
它帮助我在这个话题上站稳了脚跟。

我建议大家

大家好,这个链接可能会对你们有所帮助

本文介绍了在ASP.NETMVC中jQuery数据表服务器端分页和排序,并逐步解释了在ASP.NETMVC(C#)中作为服务器端的情况 我将参考这篇文章[jQuery Datatable在ASP.NET MVC中的服务器端分页和排序]

用于设置jQuery数据库的jQuery代码

<script>
    $(document).ready(function () {
        $("#myTable").DataTable({
            "processing": true, // for show progress bar
            "serverSide": true, // for process server side
            "filter": false, // this is for disable filter (search box)
            "orderMulti": false, // for disable multiple column at once
            "ajax": {
                "url": "/home/LoadData",
                "type": "POST",
                "datatype": "json"
            },
            "columns": [
                    { "data": "ContactName", "name": "ContactName", "autoWidth": true },
                    { "data": "CompanyName", "name": "CompanyName", "autoWidth": true },
                    { "data": "Phone", "name": "Phone", "autoWidth": true },
                    { "data": "Country", "name": "Country", "autoWidth": true },
                    { "data": "City", "name": "City", "autoWidth": true },
                    { "data": "PostalCode", "name": "PostalCode", "autoWidth": true }
            ]
        });
    });
</script>

请遵循这个代码,它非常简单

<script type="text/javascript">
$(document).ready(function () {
    $("#AllUsers").DataTable({
        "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
        "ajax": {
            "url": "@Url.Content("~/Users/GetAllUsers")",
            "type": "POST",
            "datatype": "json"
        },
        "columns": [
            { data: 'UserID', name: 'UserID', "autoWidth": true },
            { data: 'Name', name: 'Name', "autoWidth": true },
            { data: 'Email', name: 'Email', "autoWidth": true },
            { data: 'UserRole', name: 'UserRole', "autoWidth": true },
            { data: 'Status', name: 'Status', "autoWidth": true },
{
    data: '', name: '', "autoWidth": true, "orderable": false, mRender: function (data, colo, row) {
        return "<i class='fa fa-trash' style='cursor:pointer'></i>";
    }
}
        ]
    });
});

$(文档).ready(函数(){
$(“#诱惑者”).数据表({
“处理”:true,//用于显示进度条
“服务器端”:true,//用于进程服务器端
“过滤器”:true,//这是用于禁用过滤器(搜索框)
“orderMulti”:false,//用于一次禁用多个列
“ajax”:{
“url”:“@url.Content(“~/Users/GetAllUsers”)”,
“类型”:“职位”,
“数据类型”:“json”
},
“栏目”:[
{data:'UserID',name:'UserID',“autoWidth”:true},
{data:'Name',Name:'Name',“autoWidth”:true},
{数据:'Email',名称:'Email',“autoWidth”:true},
{data:'UserRole',name:'UserRole',“autoWidth”:true},
{数据:'Status',名称:'Status',“autoWidth”:true},
{
数据:“”,名称:“”,“autoWidth”:true,“orderable”:false,mRender:函数(数据,colo,行){
返回“”;
}
}
]
});
});

这就是控制器方法

public JsonResult GetAllUsers()
    {
        JsonResult result = new JsonResult();
        try
        {
            // Initialization.   
            string search = Request.Form.GetValues("search[value]")[0];
            string draw = Request.Form.GetValues("draw")[0];
            string order = Request.Form.GetValues("order[0][column]")[0];
            string orderDir = Request.Form.GetValues("order[0][dir]")[0];
            int startRec = Convert.ToInt32(Request.Form.GetValues("start")[0]);
            int pageSize = Convert.ToInt32(Request.Form.GetValues("length")[0]);
            // Loading.   
            List<User> data = _userReps.AllUsers().ToList();
            // Total record count.   
            int totalRecords = data.Count;
            // Verification.   
            if (!string.IsNullOrEmpty(search) &&
                !string.IsNullOrWhiteSpace(search))
            {
                // Apply search   
                data = data.Where(p => p.FirstName.ToString().ToLower().Contains(search.ToLower()) ||
                    p.LastName.ToLower().Contains(search.ToLower()) ||
                    p.EmailID.ToString().ToLower().Contains(search.ToLower()) ||
                    p.UserRole.UserRoleName.ToLower().Contains(search.ToLower()) ||
                    p.UserStatus.Name.ToLower().Contains(search.ToLower())
                 ).ToList();
            }
            // Sorting.   
            if (!(string.IsNullOrEmpty(order) && string.IsNullOrEmpty(orderDir)))
            {
                data = data.OrderBy(order + " " + orderDir).ToList();
            }
            int recFilter = data.Count;
            data = data.Skip(startRec).Take(pageSize).ToList();
            var modifiedData = data.Select(d =>
                new {
                UserID= d.UserID,
                Name= d.FirstName + " "+ d.LastName,
                Email= d.EmailID, 
                Status= d.UserStatus.Name,
                UserRole= d.UserRole.UserRoleName
                }
                );
            // Loading drop down lists.   
            result = this.Json(new
            {
                draw = Convert.ToInt32(draw),
                recordsTotal = totalRecords,
                recordsFiltered = recFilter,
                data = modifiedData 
            }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            // Info   
            Console.Write(ex);
        }
        // Return info.   
        return result;  
    }
publicJSONResult GetAllUsers()
{
JsonResult=新的JsonResult();
尝试
{
//初始化。
字符串搜索=Request.Form.GetValues(“搜索[value]”[0];
string draw=Request.Form.GetValues(“draw”)[0];
字符串order=Request.Form.GetValues(“order[0][column]”)[0];
字符串orderDir=Request.Form.GetValues(“order[0][dir]”)[0];
int startRec=Convert.ToInt32(Request.Form.GetValues(“start”)[0]);
int pageSize=Convert.ToInt32(Request.Form.GetValues(“length”)[0]);
//装载。
列表数据=_userReps.AllUsers().ToList();
//记录总数。
int totalRecords=data.Count;
//核实。
如果(!string.IsNullOrEmpty)(搜索)&&
!string.IsNullOrWhiteSpace(搜索))
{
//应用搜索
data=data.Where(p=>p.FirstName.ToString().ToLower().Contains(search.ToLower())||
p、 LastName.ToLower().Contains(search.ToLower())||
p、 EmailID.ToString().ToLower().Contains(search.ToLower())||
p、 UserRole.UserRoleName.ToLower().Contains(search.ToLower())||
p、 UserStatus.Name.ToLower().Contains(search.ToLower())
).ToList();
}
//分类。
if(!(string.IsNullOrEmpty(order)和&string.IsNullOrEmpty(orderDir)))
{
data=data.OrderBy(order+“”+orderDir.ToList();
}
int recFilter=data.Count;
data=data.Skip(startRec).Take(pageSize.ToList();
var modifiedData=data.Select(d=>
新的{
UserID=d.UserID,
Name=d.FirstName+“”+d.LastName,
Email=d.EmailID,
Status=d.UserStatus.Name,
UserRole=d.UserRole.UserRoleName
}
);
//正在加载下拉列表。
result=this.Json(新的
{
draw=将.ToInt32转换为(draw),
recordsTotal=totalRecords,
recordsFiltered=recFilter,
数据=修改数据
},JsonRequestBehavior.AllowGet);
}
捕获(例外情况除外)
{
//信息
控制台写入(ex);
}
//返回信息。
返回结果;
}

在您提到的官方网站中,有一个完整的参考资料


我希望它能有所帮助。

我目前正在处理一个类似的问题。你知道第一个链接是否仍然是处理这个问题的最佳方式吗?哈哈,也许“最佳方式”不是一个可以回答的问题。但是,我想我的意思是,你会建议某人仍然使用这种方式吗?我会建议如何获得特定的专栏,比如“County”您好,我如何启用列排序?知道为什么会出现此错误吗?IFormCollection不包含GetValues的定义,并且找不到可访问的扩展方法GetValues接受IFormCollection类型的第一个参数。对此答案投了反对票的人没有注意到问题本身要求链接:/v我想结束这个问题。。。
public JsonResult GetAllUsers()
    {
        JsonResult result = new JsonResult();
        try
        {
            // Initialization.   
            string search = Request.Form.GetValues("search[value]")[0];
            string draw = Request.Form.GetValues("draw")[0];
            string order = Request.Form.GetValues("order[0][column]")[0];
            string orderDir = Request.Form.GetValues("order[0][dir]")[0];
            int startRec = Convert.ToInt32(Request.Form.GetValues("start")[0]);
            int pageSize = Convert.ToInt32(Request.Form.GetValues("length")[0]);
            // Loading.   
            List<User> data = _userReps.AllUsers().ToList();
            // Total record count.   
            int totalRecords = data.Count;
            // Verification.   
            if (!string.IsNullOrEmpty(search) &&
                !string.IsNullOrWhiteSpace(search))
            {
                // Apply search   
                data = data.Where(p => p.FirstName.ToString().ToLower().Contains(search.ToLower()) ||
                    p.LastName.ToLower().Contains(search.ToLower()) ||
                    p.EmailID.ToString().ToLower().Contains(search.ToLower()) ||
                    p.UserRole.UserRoleName.ToLower().Contains(search.ToLower()) ||
                    p.UserStatus.Name.ToLower().Contains(search.ToLower())
                 ).ToList();
            }
            // Sorting.   
            if (!(string.IsNullOrEmpty(order) && string.IsNullOrEmpty(orderDir)))
            {
                data = data.OrderBy(order + " " + orderDir).ToList();
            }
            int recFilter = data.Count;
            data = data.Skip(startRec).Take(pageSize).ToList();
            var modifiedData = data.Select(d =>
                new {
                UserID= d.UserID,
                Name= d.FirstName + " "+ d.LastName,
                Email= d.EmailID, 
                Status= d.UserStatus.Name,
                UserRole= d.UserRole.UserRoleName
                }
                );
            // Loading drop down lists.   
            result = this.Json(new
            {
                draw = Convert.ToInt32(draw),
                recordsTotal = totalRecords,
                recordsFiltered = recFilter,
                data = modifiedData 
            }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            // Info   
            Console.Write(ex);
        }
        // Return info.   
        return result;  
    }