2016-05-05 7 views
1

Derzeit wird versucht, eine serverseitige Datentabelle mit C# und MVC zu erstellen. Ich habe zu dem Punkt, wo die Datenrückgabe aus dem Dienst ist, um den Ajax-Aufruf in Javascript verwenden, aber die Datentabelle Aufenthalt Verarbeitung ...Verarbeitung der serverseitigen Datentabelle, aber Daten werden nicht angezeigt

enter image description here

Und die Rückkehr Daten sehen auch gut aus:

enter image description here Javascript:

var accountTable = $("#accountTable").DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax: { 
     url: '/Entity/AjaxGetJsonData?entityId=' + $("#AdviserId").val(), 
     type: "GET", 
     columns: [ 
      { "data": "Date", "orderable": true }, 
      { "data": "OtherEntity", "orderable": false }, 
      { "data": "Description", "orderable": false }, 
      { 
       "sDefaultContent": "", 
       "sClass": "dtAlignRight", 
       "mRender": function (data, type, row) { 
        if (row.Amount.charAt(1) == '-') { 
         var negativeAmount = row.Amount.slice(2); 
         return "-$" + negativeAmount; 
        } 
        else { 
         return row.Amount; 
        } 
       } 
      } 
     ], 
     success: function (msg) { 
      //do something here 
     } 
    } 
}); 

C Daten # Rückkehr:

[Authorize] 
    public ActionResult AjaxGetJsonData(int entityId, int draw) 
    { 
     List<TransactionView> transactions = CommissionService.GetDefaultTransactions(entityId); 
     List<DataItem> items = TransformToDataItem(transactions); 
     string search = Request.QueryString["search[value]"]; 
     int sortColumn = -1; 
     //string sortDirection = "asc"; 
     if (Request.QueryString["order[0][column]"] != null) 
     { 
      sortColumn = int.Parse(Request.QueryString["order[0][column]"]); 
     } 
     DataTableData table = new DataTableData(); 
     table.draw = draw; 
     table.recordsTotal = items.Count; 
     table.data = items; 
     table.recordsFiltered = items.Count; 

     return Json(table, JsonRequestBehavior.AllowGet); 
    } 

Andere relevante Sachen:

public List<DataItem> TransformToDataItem(List<TransactionView> transactions) 
{ 
    List<DataItem> results = new List<DataItem>(); 
    foreach (TransactionView view in transactions) 
    { 
     DataItem item = new DataItem(); 
     item.Date = view.Date; 
     item.OtherEntity = view.OtherEntity.Trim(); 
     item.Description = view.Description.Trim(); 
     item.Amount = view.Amount; 
     results.Add(item); 
    } 
    return results; 
} 

public class DataItem 
{ 
    public string Date { get; set; } 
    public string OtherEntity {get; set;} 
    public string Description { get; set; } 
    public string Amount { get; set; } 
} 

public class DataTableData 
{ 
    public int draw { get; set; } 
    public int recordsTotal { get; set; } 
    public int recordsFiltered { get; set; } 
    public List<DataItem> data { get; set; } 
} 

Gibt es etwas, das ich vermisst, dass die Datentabelle immer verursacht Verarbeitung zu sein und füllt nie die Tabelle mit den Daten?

+4

Ich glaube nicht, 'columns' soll innerhalb von' ajax' – David784

+0

seine vereinbarten dummem mistake.Thanks dave –

+0

Vielleicht finden Sie es hilfreich, meine Wrapper-Bibliothek für Datentabellen zu verwenden: http://aspdatatables.azurewebsites.net/ – mcintyre321

Antwort

1

Columns sollte ein Kind von DataTable sein, nicht von ajax. Auch die success ist wahrscheinlich unnötig. Siehe die Beispiele in den reference

var accountTable = $("#accountTable").DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax: { 
     url: '/Entity/AjaxGetJsonData?entityId=' + $("#AdviserId").val(), 
     type: "GET" 
    }, 
    columns: [ 
     { "data": "Date", "orderable": true }, 
     { "data": "OtherEntity", "orderable": false }, 
     { "data": "Description", "orderable": false }, 
     { 
       "sDefaultContent": "", 
       "sClass": "dtAlignRight", 
       "mRender": function (data, type, row) { 
        if (row.Amount.charAt(1) == '-') { 
         var negativeAmount = row.Amount.slice(2); 
         return "-$" + negativeAmount; 
        } 
        else { 
         return row.Amount; 
        } 
       } 
     } 
    ] 

}); 
+0

Ah. Perfekt. Ein alberner kindischer Fehler, hahaha. Wow, ich hätte nie auf dieses hahaha aufgegriffen. Es war ein langer Tag. Vielen Dank David :) –

Verwandte Themen