清空JQuery DataTable,c#WebMethod

时间:2013-07-22 16:39:18

标签: c# jquery webmethod

我有一个需要填充JQuery表的Ajax web方法。我的代码没有产生任何错误,但我在表格中看不到任何数据。

这是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;

    }

*编辑* 我已经安装并运行了DataTables调试程序,该程序产生以下内容:

     "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而不是响应。也许?

1 个答案:

答案 0 :(得分: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上的代码中使用静态数据初始化表 然后,在ajax调用中,只需执行:

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