2017-04-04 5 views
0

Letztendlich möchte ich die Spaltensortierung meiner Tabelle an den Server senden, damit ich ein sortiertes paginiertes Recordset aus der Datenbank abrufen kann. Diese Codezeile wird mir auf diesem Weg:Wie kann ich Spaltennamen per Index mit Bootstrap-Datatables erhalten?

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

Aber es gibt ein Array wie folgt aus:

[[0,"asc"]] 

ich nicht auf einen Spaltenindex von einem Clientside Array verlassen kann meine Daten-Set bestellen auf der Serverseite. Was ich brauche, ist ein Array wie folgt aus:

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

Wenn ich eine API, so zu schreiben, würde ich die Spaltennamen zugänglich wie so machen:

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

Scheint nicht, dass die DataTable API ist jedoch so einfach.

Antwort

0

In Ihrer Datentabelle müssen Sie den Parameter Name in das Feld schreiben, wenn Sie den Namen in Ihrer API abrufen möchten. Überprüfen Sie mein Gebrüll Code,

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

Hier habe ich den Namen Datum auf dem Gebiet HireDate.

Und in meiner Api Methode,

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

Und meine GetQueryValueByName Klasse unten,

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

Sie können den Query-String als Weg holen.

Verwandte Themen