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のいずれもデータを表示せず、空のレコード・ラベルも表示しません。どのようにこの問題を解決するための任意のアイデア?
どの**バージョン**を追加することを忘れそこからしないでください** 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
@Oleg、nugetでjQuery.jqGridを無料で使用しています。バージョンは4.4.4です。私はvarリストにデータを取得していますが、グリッドに表示されません。 – LogicalDesk
非常に長い時間が経っていないレトロなバージョン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