C#/ASP.NET および JSON.NET (および AJAX.NET のものは使用しない) で jqGrid を使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1045870

質問

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 で動作させるのに問題がある場合は、こちらをご覧ください。 ここ。これにより、時間を大幅に節約できるはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top