2017-03-28 1 views
0

単純なWebサービスメソッドを呼び出すときにテーブルにデータがありません。私はdatatbleプラグインを使用してjqueryデータテーブルにサーバー側でデータを返すようにしようとしています。しかし、それは私にテーブルヘッダーを持つテーブルのデータを与えません。 webserviceメソッドは私にJsonデータを返していますが、文字列タグも追加されていますので、完全にJsonかどうかはわかりません。これはかなり問題です。私はこれにかなり新しいですし、常にサーバー側で働いています。私の仕事では、私はC#のデータテーブルをたくさん扱っていますので、データテーブルのみをセロライズする必要があります。データベースが返すことになる列だから、私はテーブル構造を表すクラスファイルと一緒に行くことはできません。その問題に対処する方法はありますか?どんな助けも大歓迎です。Jqueryデータテーブル単純なWebサービスからWebメソッドを呼び出すときにテーブルにデータが表示されない

<script src="Scripts/jquery-3.1.1.js"></script> 
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css" /> 
<script src="//cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      url: 'UserService.asmx/UserDetails', 
      contentType: "application/json; charset=utf-8", 
      method: 'post', 
      datatype: 'json', 
      success: function (data) { 
       $('#tbl').dataTable({ 
        data: data, 
        columns: [ 
        { 'data': 'UserId' }, 
        { 'data': 'UserName' }, 
        { 'data': 'UserPassword' }, 
        { 'data': 'RoleId' }, 
        { 'data': 'Gender' }, 
        { 'data': 'EmailId' }, 
        { 'data': 'DateOfBirth' }, 
        { 'data': 'Address' }, 
        ] 
       }); 
      }, 
      error: function() { 
      alert('Fail!'); 
     } 
     }); 
    }); 
</script> 

と私のサーバー側Webサービス・コードは

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string UserDetails() 
    { 
     DataTable dt = new DataTable(); 
     dt.TableName = "UserDetails"; 
     SqlConnection conn; 
     SqlCommand cmd; 
     string connection = ConfigurationManager.ConnectionStrings["Connstr"].ToString(); 
     string command = "SELECT * FROM tbl_User"; 
     using (conn = new SqlConnection(connection)) 
     { 
      cmd = new SqlCommand(command, conn); 
      cmd.CommandType = CommandType.Text; 
      conn.Open(); 
      cmd.ExecuteNonQuery(); 
      SqlDataAdapter da = new SqlDataAdapter(command, conn); 
      da.Fill(dt); 
      conn.Close(); 
     }     
      var js = DataTableToJSONWithJavaScriptSerializer(dt); 
     return js; 
    } 

    public string DataTableToJSONWithJavaScriptSerializer(DataTable dt) 
     { 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     List<Dictionary<string, object>> parentRow = new List<Dictionary<string, object>>(); 
     Dictionary<string, object> childRow; 
      foreach (DataRow row in dt.Rows) 
      { 
       childRow = new Dictionary<string, object>(); 
       foreach (DataColumn col in dt.Columns) 
       { 
        childRow.Add(col.ColumnName, row[col]); 
       } 
       parentRow.Add(childRow); 
      } 
     return js.Serialize(parentRow); 
     } 

あるWebサービスメソッドの出力は、以下の形式です。

 success: function (data) { 
     var d = JSON.parse(data.d); 

      $('#tbl').dataTable({data:d, 

など:

This XML file does not appear to have any style information associated with it. The document tree is shown below. 
<string xmlns="http://tempuri.org/"> 
[{"UserId":"XYZ","UserName":"XYX","UserPassword":"[email protected]","RoleId":1,"Gender":"F","EmailId":"[email protected]","DateOfBirth":"\/Date(623874600000)\/","Address":"ABC Str. 57"}, 
{"UserId":"ANATR","UserName":"ANT","UserPassword":"[email protected]","RoleId":1,"Gender":"F","EmailId":"[email protected]","DateOfBirth":"\/Date(-301815000000)\/","Address":"XYZ. 2222"}, 
{"UserId":"WOLZA","UserName":"DIS","UserPassword":"[email protected]","RoleId":2,"Gender":"M","EmailId":"[email protected]","DateOfBirth":"\/Date(379362600000)\/","Address":"ul. JUMP 68"}] 
</string> 
+0

私はデータテーブルがXMLラッパーなしで純粋なjsonを期待していると思います。 – xeo

+0

XMLラッパーなしでそれを得る方法はありますか?クエリによって返されたデータテーブルをシリアル化する必要があります –

答えて

1

私は

How to convert datatable to json string using json.net?は、あなたとシリアル化した後、成功コールバックの使用jquery.parsejsonで

+0

これはどちらも動作しません。お試しいただきありがとうございます –

+0

何が起こったのwaenあなたはそれを試してみましたあなたは正しくJSsonを得ましたか? –

+0

その空白の画面が表示されます。出力データ –

1

試みを助けることができると思います。

関連する問題