2017-07-15 15 views
0

jqGridはMVCコントローラからjsonデータをフェッチして表示していません。この場合でも表示されないの空レコードラベルもあります。ここに私のjQueryの jqGridはMVCでjsonデータを表示しません

$(function() { 
      $("#JQGrid1").jqGrid({ 
       url: "/CertificateDetails/GetCertificateDetails", 
       datatype: 'json', 
       mtype: 'Get', 
       colNames: ['Name', 'Issuer', 'Location', 'Private Key[Yes/No]'], 
       //data: dataArray, 
       colModel: [ 
        { 
         key: false, 
         name: 'Name', 
         index: 'Name', 
         editable: false 
        }, 
        { 
         key: false, 
         name: 'Issuer', 
         index: 'Issuer', 
         editable: false 
        }, 
        { 
         key: false, 
         name: 'Location', 
         index: 'Location', 
         editable: false 
        }, 
        { 
         key: false, 
         name: 'HasPrivateKey', 
         index: 'HasPrivateKey', 
         editable: false 
        } 
       ], 
       height: '100%', 
       viewrecords: true, 
       caption: "Certificate Details", 
       emptyrecords: "No record to display!!" 
      }); 
     }); 

コントローラは、コード

をコード - 次のとおりです。

ここ
CertDetails cd = new CertDetails(); 
     public ActionResult Index() 
     { 
      return View(); 
     } 
     // 
     // GET: /CertificateDetails/ 
     public ActionResult GetCertificateDetails() 
     { 
      var stores = new Dictionary<StoreName, string>() 
       { 
         {StoreName.My, "Personal"}, 
         {StoreName.Root, "Trusted roots"}, 
         {StoreName.TrustedPublisher, "Trusted publishers"}, 
         {StoreName.AddressBook, "Address Book"}, 
         {StoreName.AuthRoot, "Auth Root"}, 
         {StoreName.CertificateAuthority, "Certificate authority"}, 
         {StoreName.Disallowed, "Disallowed"}, 
         {StoreName.TrustedPeople, "Trusted people"} 
       // and so on 
       }.Select(s => new { store = new X509Store(s.Key, StoreLocation.LocalMachine), location = s.Value }).ToArray(); 

      foreach (var store in stores) 
       store.store.Open(OpenFlags.ReadOnly); // open each store 

      var list = stores.SelectMany(s => s.store.Certificates.Cast<X509Certificate2>() 
       .Select(mCert => new CertDetails 
       { 
        HasPrivateKey = mCert.HasPrivateKey ? "Yes" : "No", 
        Name = mCert.FriendlyName != "" ? mCert.FriendlyName : "Unavailable", 
        Location = s.location, 
        Issuer = mCert.Issuer 
       })).ToList(); 

      return Json(list,JsonRequestBehavior.AllowGet); 
     } 

は、コントローラのアクションから返されたデータである私からJSON形式のデータを取得していますMETHOD-

[{"Name":"Unavailable","HasPrivateKey":"Yes","Location":"Personal","Issuer":"CN=Dell Issuing Certificate Authority 302, OU=MS PKI, O=Dell Inc."},{"Name":"IIS Express Development Certificate","HasPrivateKey":"Yes","Location":"Personal","Issuer":"CN=localhost"}] 

コントローラーはjqGridのいずれもデータを表示せず、空のレコード・ラベルも表示しません。どのようにこの問題を解決するための任意のアイデア?

+0

どの**バージョン**を追加することを忘れそこからしないでください** jqGrid([free jqGrid](https://github.com/free-jqgrid/jqGrid)、商用[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)、またはバージョン<= 4.7の古いjqGrid?)サーバーから返されたテストデータを質問に追加できますか? Chrome/IE/Firefoxの開発者ツールを使用して、正確なHTTP応答を確認することができます。 – Oleg

+0

@Oleg、nugetでjQuery.jqGridを無料で使用しています。バージョンは4.4.4です。私はvarリストにデータを取得していますが、グリッドに表示されません。 – LogicalDesk

+0

非常に長い時間が経っていないレトロなバージョン4.4.4をアンインストールすることをお勧めします。現在のバージョンでは、[free-jqGrid](https://www.nuget.org/packages/free-jqGrid)NuGetパッケージをインストールしてください:4.14 .1。 JSONデータのテストはどうですか?ところで、不要な 'key:false、editable:false'と' index'プロパティを 'colModel'から削除し、jqGridオプション' loadonce:true、forceClientSorting:true'を追加することをお勧めします。 – Oleg

答えて

0

あなたは以下のように、代わりにjQueryのDataTableのプラグインを試すことができます。

$(document).ready(function() { 
     $("#myGrid").dataTable({ 
      "ajax": { 
       "url": "/CertificateDetails/GetCertificateDetails", 
       "dataSrc": "" 
      }, 
      "columns": [{ 
       "data": "Name" 
      }, { 
       "data": "Location" 
      }, { 
       "data": "Issuer" 
      }, { 
       "data": "HasPrivateKey" 
      }] 

     }); 
    }); 

<table id="myGrid"> 
    <thead> 
     <tr style="text-align:left;"> 
      <th>Name</th> 
      <th>Location</th> 
      <th>Issuer</th> 
      <th>HasPrivateKey?</th> 
     </tr> 
    </thead> 
     </table> 

使用jqGridのreferences-

<link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.9/css/jquery.dataTables.min.css"> 
<script type="text/javascript" charset="utf8" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.0.min.js"></script> 
    <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js"></script> 
関連する問題