jquerydatatables服务器端更好的列排序方式
我现在正在asp mvc中实现datatables。我已经设法让它运行和搜索。但是,我想知道是否有更好的排序/排序方法? 目前,我必须在字典中手动定义我的列和顺序,然后搜索键,然后使用值 datatables是否有执行此操作的本机方法?我曾经使用Codeigniter的数据表,我不必这样做。这是我的控制器和视图 视图: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”, “类型”:“职位”, “数据”
$(文档).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;
}