2017-04-04 100 views
0

最終,我想將我的表的列排序發送到服務器,以便我可以從數據庫檢索排序的分頁記錄集。這行代碼讓我走這條道路:如何通過使用Bootstrap Datatables的索引獲取列名?

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

但是,它返回一個這樣的數組:

[[0,"asc"]] 

我不能依靠列索引從客戶方陣列爲了我的數據集在服務器端。我需要的是一個這樣的數組:

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

如果我寫這樣一個API,我會做的列名,像這樣訪問:

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

似乎沒有了不過,DataTable API非常簡單。

回答

0

在您的數據表中,如果您想要在API中檢索名稱,則需要將名稱參數寫入該字段。檢查我的婁代碼,

.DataTable({ 
//rest code, 
"order": [ 
     [0, "asc"] 
    ], 
//rest code, 
"columns": [ 
      { "data": "HireDate", name: "Date", }, 
//rest columns 

在這裏,我的名字日期設置到外地僱傭日期

而在我的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; 
    } 
} 

可以讀取查詢字符串作爲你的方式。

相關問題