Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquerydatatables服务器端更好的列排序方式_Jquery_Asp.net_Asp.net Mvc_Datatables - Fatal编程技术网

jquerydatatables服务器端更好的列排序方式

jquerydatatables服务器端更好的列排序方式,jquery,asp.net,asp.net-mvc,datatables,Jquery,Asp.net,Asp.net Mvc,Datatables,我现在正在asp mvc中实现datatables。我已经设法让它运行和搜索。但是,我想知道是否有更好的排序/排序方法? 目前,我必须在字典中手动定义我的列和顺序,然后搜索键,然后使用值 datatables是否有执行此操作的本机方法?我曾经使用Codeigniter的数据表,我不必这样做。这是我的控制器和视图 视图: $(文档).ready(函数(){ $(“#表”).DataTable({ “ajax”:{ “url”:“/Users/LoadUsers”, “类型”:“职位”, “数据”

我现在正在asp mvc中实现datatables。我已经设法让它运行和搜索。但是,我想知道是否有更好的排序/排序方法? 目前,我必须在字典中手动定义我的列和顺序,然后搜索键,然后使用值

datatables是否有执行此操作的本机方法?我曾经使用Codeigniter的数据表,我不必这样做。这是我的控制器和视图

视图:


$(文档).ready(函数(){
$(“#表”).DataTable({
“ajax”:{
“url”:“/Users/LoadUsers”,
“类型”:“职位”,
“数据”:功能(d){
},
“数据类型”:“json”
},
“排序”:正确,
“栏目”:[
{“data”:“Id”,“name”:“Id”,“orderable”:false},
{“数据”:“电子邮件”,“名称”:“电子邮件”},
{“数据”:“用户名”,“名称”:“用户名”},
{“数据”:“电话号码”,“姓名”:“电话号码”},
],
“处理”:对,
“服务器端”:正确,
});
});
控制器:

    [HttpPost]
    public JsonResult LoadUsers()
    {
        JsonResult result = new JsonResult();
        try
        {
            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]);

            var data = dbContext.Users.ToList();
            int totalRecords = data.Count;

            var modelStructure = new Dictionary<int, string>();
            modelStructure.Add(0, "Id");
            modelStructure.Add(1, "Email");
            modelStructure.Add(2, "UserName");
            modelStructure.Add(3, "PhoneNumber");

            if (!string.IsNullOrEmpty(search) && !string.IsNullOrWhiteSpace(search))
            {
                data = data.Where(
                    u => u.UserName.ToString().ToLower().Contains(search.ToLower()) ||
                    u.Email.ToLower().Contains(search.ToLower())
                ).ToList();
            }
            if (!(string.IsNullOrEmpty(order) && string.IsNullOrEmpty(orderDir)))
            {
                var columnName = modelStructure.FirstOrDefault(f => f.Key == Convert.ToInt32(order));
                data = data.OrderBy(columnName.Value + " " + orderDir).ToList();
            }

            int recFilter = data.Count;
            data = data.Skip(startRec).Take(pageSize).ToList();
            var modifiedData = data.Select(u => new UsersViewModel
            {
                Id = u.Id,
                Email = u.Email,
                UserName = u.UserName,
                PhoneNumber = u.PhoneNumber
            });
            result = this.Json(new
            {
                draw = Convert.ToInt32(draw),
                recordsTotal = totalRecords,
                recordsFiltered = recFilter,
                data = modifiedData,
                order = Request.Form.GetValues("order[0][column]"),
                orderdir = Request.Form.GetValues("order[0][dir]")[0]
        }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception e)
        {
            Console.Write(e);
        }
        return result;
    }
[HttpPost]
公共JsonResult LoadUsers()
{
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]);
var data=dbContext.Users.ToList();
int totalRecords=data.Count;
var modelStructure=newdictionary();
添加(0,“Id”);
添加(1,“电子邮件”);
添加(2,“用户名”);
添加(3,“电话号码”);
如果(!string.IsNullOrEmpty(搜索)和&!string.IsNullOrWhiteSpace(搜索))
{
数据=数据。其中(
u=>u.UserName.ToString().ToLower()包含(search.ToLower())||
u、 Email.ToLower()包含(search.ToLower())
).ToList();
}
if(!(string.IsNullOrEmpty(order)和&string.IsNullOrEmpty(orderDir)))
{
var columnName=modelStructure.FirstOrDefault(f=>f.Key==Convert.ToInt32(order));
data=data.OrderBy(columnName.Value+“”+orderDir.ToList();
}
int recFilter=data.Count;
data=data.Skip(startRec).Take(pageSize.ToList();
var modifiedData=data.Select(u=>newusersviewmodel
{
Id=u.Id,
电子邮件=美国电子邮件,
用户名=u.UserName,
PhoneNumber=u.PhoneNumber
});
result=this.Json(新的
{
draw=将.ToInt32转换为(draw),
recordsTotal=totalRecords,
recordsFiltered=recFilter,
数据=修改数据,
order=Request.Form.GetValues(“order[0][column]”),
orderdir=Request.Form.GetValues(“订单[0][dir]”[0]
},JsonRequestBehavior.AllowGet);
}
捕获(例外e)
{
控制台。写入(e);
}
返回结果;
}

您是在寻找本机API方法,还是按自定义函数进行自定义排序/排序?您好!我想看看是否有一种将列ID转换为列名的本机API方法
    [HttpPost]
    public JsonResult LoadUsers()
    {
        JsonResult result = new JsonResult();
        try
        {
            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]);

            var data = dbContext.Users.ToList();
            int totalRecords = data.Count;

            var modelStructure = new Dictionary<int, string>();
            modelStructure.Add(0, "Id");
            modelStructure.Add(1, "Email");
            modelStructure.Add(2, "UserName");
            modelStructure.Add(3, "PhoneNumber");

            if (!string.IsNullOrEmpty(search) && !string.IsNullOrWhiteSpace(search))
            {
                data = data.Where(
                    u => u.UserName.ToString().ToLower().Contains(search.ToLower()) ||
                    u.Email.ToLower().Contains(search.ToLower())
                ).ToList();
            }
            if (!(string.IsNullOrEmpty(order) && string.IsNullOrEmpty(orderDir)))
            {
                var columnName = modelStructure.FirstOrDefault(f => f.Key == Convert.ToInt32(order));
                data = data.OrderBy(columnName.Value + " " + orderDir).ToList();
            }

            int recFilter = data.Count;
            data = data.Skip(startRec).Take(pageSize).ToList();
            var modifiedData = data.Select(u => new UsersViewModel
            {
                Id = u.Id,
                Email = u.Email,
                UserName = u.UserName,
                PhoneNumber = u.PhoneNumber
            });
            result = this.Json(new
            {
                draw = Convert.ToInt32(draw),
                recordsTotal = totalRecords,
                recordsFiltered = recFilter,
                data = modifiedData,
                order = Request.Form.GetValues("order[0][column]"),
                orderdir = Request.Form.GetValues("order[0][dir]")[0]
        }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception e)
        {
            Console.Write(e);
        }
        return result;
    }