最终,我想将表的列排序发送到服务器,以便从数据库中检索已排序的分页记录集。这行代码让我走上了这条道路:
$("#results").DataTable().order();
但是,它返回一个如下数组:
[[0,"asc"]]
我不能依赖来自客户端数组的列索引来在服务器端订购我的数据集。我需要的是这样的数组:
[["Name","asc"],["HireDate","desc"]]
如果我要编写这样的API,我可以像这样访问列名:
$("#results").DataTable().columns()[0].name;
$("#results").DataTable().columns(0).name;
看起来DataTable API并不是那么简单。
答案 0 :(得分:0)
如果要在API中检索名称,则需要在数据表中将名称参数写入字段。检查我的波纹管代码,
.DataTable({
//rest code,
"order": [
[0, "asc"]
],
//rest code,
"columns": [
{ "data": "HireDate", name: "Date", },
//rest columns
我在此处将名称日期设置为字段 HireDate 。
在我的Api方法中,
string _ordByColumn =
GetQueryValueByName.Get(Request.GetQueryNameValuePairs(),
"order[0].column");
string _ordColumnName =
GetQueryValueByName.Get(Request.GetQueryNameValuePairs(), "columns["
+ _ordByColumn + "].name");
string _ordDirection =
GetQueryValueByName.Get(Request.GetQueryNameValuePairs(),
"order[0].dir");
if (!string.IsNullOrEmpty(_ordByColumn))
{
switch (_ordColumnName)
{
case "Date":
{
if (string.Compare(_ordDirection, "asc") == 0)
{
//retrieve data order by Date
}
else
{
//retrieve data order by descending Date
}
break;
}
//rest cases and then default
default:
{
//retrieve data order by what ever you want
break;
}
}
}
我的GetQueryValueByName类如下,
public static class GetQueryValueByName
{
public static string Get(IEnumerable<KeyValuePair<string, string>> _req,
string key)
{
return _req.FirstOrDefault(ma => string.Compare(ma.Key, key) ==
0).Value;
}
}
您可以按照自己的方式获取查询字符串。