C#/ASP.NET および JSON.NET (および AJAX.NET のものは使用しない) で jqGrid を使用するにはどうすればよいですか?
-
20-08-2019 - |
質問
OK、私はこれを数日間調べてきましたが、何が間違っているのか特にわかりません。C#/ASP.NET およびオープン ソース ツールで jqGrid を使用する実際の例を持っている人がいたら、どこで見つけられるか教えてください。これをデバッグするために使用できる適切なドキュメントやツールを見つけるためのヒントも大歓迎です (私は js/jQuery についてはまったくの初心者です)。基本的に必要なのはその場で編集する機能だけなので、そのための別の明らかな解決策を見落としている場合は、知っておくと役立つかもしれません...可能であれば、AJAX.NET の使用を避けたいと考えています。
ここで本当に明白なことを見落としているように感じます。
次の例では、jqGrid を取得して表示しますが、データは表示されません。
関連する JavaScript は次のとおりです。
jQuery(document).ready(function(){
jQuery("#role_assignment_table").jqGrid({
url:'http://localhost:4034/WebSite2/PageItemHandler.asmx/GetPageItemRolesJson?id=3',
mtype: 'GET',
contentType: "application/json; charset=utf-8",
datatype: "jsonstring",
colModel:[
{name:'Id', label:'ID', jsonmap:'Id'},
{name:'Title', jsonmap:'Title'},
{name:'AssignedTo', label:'Assigned To', jsonmap:'AssignedTo'},
{name:'Assigned', jsonmap:'Assigned'},
{name:'Due', jsonmap:'Due'},
{name:'Completed', jsonmap:'Completed'}
],
jsonReader: {
page: "Page",
total: "Total",
records: "Records",
root: "Rows",
repeatitems: false,
id: "Id"
},
rowNum:10,
rowList:[10,20,30],
imgpath: 'js/themes/basic/images',
viewrecords: false,
caption: "Role Assignments"
});
});
HTML:
<table id="role_assignment_table" class="scroll" cellpadding="0" cellspacing="0" />
生成された JSON: それが jqGrid に到達するかどうか、あるいは jqGrid が JSON または WebMethod を好まないのかどうかはわかりませんが、適切な URL にアクセスして JSON 結果文字列を取得すると、自分でそれを呼び出すことができます。
{"Page":"1","Total":1.0,"Records":"4",
"Rows":[
{"Id":1,"Item":null,"Title":"Story Manager","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":2,"Item":null,"Title":"Analysis","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":3,"Item":null,"Title":"Narrative","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"},
{"Id":4,"Item":null,"Title":"Graphic","AssignedTo":null,"Assigned":"\/Date(1245186733940-0500)\/","Due":"\/Date(1248383533940-0500)\/","Completed":"\/Date(1247087533940-0500)\/"}
]
}
乾杯 ウィリアム・ライリー・ランド
解決
他の作業を行う前に、これをダウンロードしてインストールしてください。
http://www.fiddler2.com/fiddler2/
これにより、JSON データを取得するために jqGrid リクエストによって何がリクエストされ、何が送り返されているかを正確に確認できます。
動作する jqGrid のコードがいくつかありますが、ここでは何かが異なります。
datatype: "json"
あなたの代わりに:
datatype: "jsonstring"
というフィールドもあります colNames
これは列名を含む文字列の配列です。
最後に、私は pager
ページング コントロールを格納する要素を識別するフィールドであり、DIV です。
他のヒント
ASP.NET では、日付は JSON としてシリアル化されます。 "/日付(ティック)/" これは jqGrid では解釈できません。可能な解決策 (役職):
- グリッドのカスタム フォーマッタを作成する
- グリッドに送信するデータを変更します(書式設定された日付を文字列として送信します)
jqGridで日付表示を実装した方法を教えてください。
ありがとう。
大文字と小文字を区別するプロパティに注意してください データ・タイプ であることを意味します データ・タイプ 大文字で T.
私もまったく同じ問題を抱えていました!私が思いついた解決策は、カスタム JavaScript フォーマッタを作成することです。
$(this).jqGrid({
...
colModel: [
{
name: 'SomeDate', index: 'SomeDate', width: 100, formatter: ndateFormatter }
}],
...
});
// Convert C# json Date.
function ndateFormatter(cellval, opts, rwdat, _act) {
var time = cellval.replace(/\/Date\(([0-9]*)\)\//, '$1');
var date = new Date();
date.setTime(time);
return date.toDateString();
}
jqGrid を ASP.NET で動作させるのに問題がある場合は、こちらをご覧ください。 ここ。これにより、時間を大幅に節約できるはずです。