2013-07-22 68 views
0

我有一個Ajax webmethod需要填充JQuery表。代碼我沒有產生任何錯誤,但我沒有看到我的表中有任何數據。空JQuery DataTable,C#WebMethod

這裏是將WebMethod:

WebMethod call

這裏是正在返回的JSON數據:

JSON results

這是目前被髮送到一個基本的表格是這樣的:

Table layout

最終結果是:方向爲何正在顯示任何數據,請 empty display

有人點?

*編輯*

這裏是其產生的JSON數據的方法的代碼。這是由將WebMethod,並返回一個字符串

    try 
       { 
        rdr = cmd.ExecuteReader(); 
        if (rdr.HasRows) 
        { 
         using (JsonWriter jsonwriter = new JsonTextWriter(sw)) 
         { 
          jsonwriter.WriteStartArray(); 
          int totalrecords = 0; 
          while (rdr.Read()) 
          { 
           jsonwriter.WriteStartObject(); 
           int fields = rdr.FieldCount; 
           for (int i = 0; i < fields; i++) 
           { 
            jsonwriter.WritePropertyName(rdr.GetName(i)); 
            jsonwriter.WriteValue(rdr[i]); 
           } 
           jsonwriter.WriteEndObject(); 
           totalrecords++; 
          } 
          jsonwriter.WriteEndArray(); 
         } 
        } 

這裏堪稱是興田的WebMethod:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public static string ApprovalInfo(string messageId) 
    { 
    string json = string.Empty; 

    json = GetComments(messageId); 

    return json; 

    } 

*編輯* 我已經安裝並運行數據表調試程序,產生如下:

 "sAjaxDataProp": "[{\"UserName\":\"watherton\",\"EnteredDate\":\"2013-07-18T14:36:46.387  
     \",\"Comment\":\"some comment 2\"},{\"UserName\":\"watherton\",\"EnteredDate\":\"2013-07- 
      18T16:12:41.753\",\"Comment\":\"some comment 3\"}]", 
     "aoColumns": [{ 
     "mDataProp": "UserName" 
     }, { 
     "mDataProp": "EnteredDate" 
     }, { 
     "mDataProp": "Comment" 
     }] 

這看起來不正確。我在Firebug中完成了一個調試,並且上面的數據流在響應選項卡中返回,JSON選項卡看起來不同。所以,我想我需要告訴WebMethod/AJax調用使用JSON而不是響應的地方。也許?

+0

節省噸在我離開之前的一天。它有什麼區別? – CSharpNewBee

+0

如果你硬編碼了一些JSON數據,'dataTable()'調用是否工作,就像這樣:'{「UserName」:「watherton」,「EnteredDate」:「2013-07-18」,「Comment」:「評論1「}'?如果沒有,那麼你如何提供你的數據到'dataTable'存在一個問題;否則這是ASP.NET AJAX Page Method如何返回JSON數據的問題。 –

+0

所以,我創建了一個小提琴使用我回來的數據,它的工作原理。但在網頁 http:// jsfiddle中依然沒有歡樂。net/s8JmF/149/ – CSharpNewBee

回答

0

嘗試調用fnDraw。

例如在http://datatables.net/api

$(document).ready(function() { 
    var oTable = $('#example').dataTable(); 

    // Re-draw the table - you wouldn't want to do it here, but it's an example :-) 
    oTable.fnDraw(); 
}); 

也發現,嘗試使用.done和.fail而不是成功:與錯誤: jQuery.ajax handling continue responses: "success:" vs ".done"?

如果這些建議沒有幫助,嘗試初始化表與靜態數據在您的代碼document.ready 然後,在阿賈克斯調用,只是這樣做:

exampleTable.fnClearTable(); 
exampleTable.fnAddData(mydata); 
exampleTable.fnDraw(); 
+0

嗨Nullius,fnDraw也沒有工作。試着對返回的字符串進行硬編碼,看看它是如何發生的。 – CSharpNewBee

+0

@CSharpNewBee硬編碼數據是如何爲你工作的?仍然有任何問題? – Nullius