如何使用Bootstrap Datatables通过索引获取列名?

时间:2017-04-04 09:40:02

标签: twitter-bootstrap datatables

最终,我想将表的列排序发送到服务器,以便从数据库中检索已排序的分页记录集。这行代码让我走上了这条道路:

$("#results").DataTable().order();

但是,它返回一个如下数组:

[[0,"asc"]]

我不能依赖来自客户端数组的列索引来在服务器端订购我的数据集。我需要的是这样的数组:

[["Name","asc"],["HireDate","desc"]]

如果我要编写这样的API,我可以像这样访问列名:

$("#results").DataTable().columns()[0].name;
$("#results").DataTable().columns(0).name;

看起来DataTable API并不是那么简单。

1 个答案:

答案 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;
    }
}

您可以按照自己的方式获取查询字符串。