1

私のMVC3アプリケーションでは、コントローラーactionresultを使用して2セットのJsonデータを返し、ビュー内の2つの別々のjqGridに渡します。

コントローラのactionresultの戻り値は次のようになります。

return Json(new
        {
            A= holderA,
            B= holderB
        },JsonRequestBehavior.AllowGet);  

ここで、AとBは、LINQtoSQLクエリから取得されたデータの配列です。

ビューでjqGridsをjqueryする必要があり、最初のグリッドは結果の「パートA」からのデータを受け入れ、2番目のグリッドは結果の「パートB」からのデータを受け入れる必要があります。

jqGridでactionresultの個々のコンポーネント(つまりAとB)にアクセスする方法を知る必要がありますが、データの送信元を参照できる特定のオプションはありますか?

ここで役立つ場合は、1つのグリッドがどのように見えるかです...

jQuery("#GridA").jqGrid({
        url: "/MyController/MyActionresult",
        datatype: 'json',
        postData: {
            Name: function () {
                return $("#Name").val();
            },
            Year: function () {
                return $("#SelectedYear").val()
            }
        },

        mtype: 'POST',
        colNames: ['Name', 'Age', 'Total']
        colModel: [

                { name: 'Name', index: 'Name', align: 'left' },
                { name: 'Age', index: 'Age', align: 'left' },
                { name: 'Total', index: 'Total', width: 150, align: 'left', search: false }],
        pager: jQuery('#GridAPager'),
        rowNum: 250,
        height: 250,
        rowList: [250, 500, 1000, 2000],
        sortname: 'Name',
        sortorder: "asc",
        viewrecords: true,
        hiddengrid: false,
        caption: 'List of People',
        gridComplete: function () {
            onGridComplete("#GridA");}
    });
    $("#GridA").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true });
});

また、2番目のグリッドはほとんど同じですが、表示されるフィールドがわずかに異なります。

1つのactionresultから両方のデータセットを返したい理由は、フォームの送信ボタンがクリックされると両方のグリッドにデータが入力されるためです。

どんな助けも素晴らしいでしょう、

ありがとう。

4

1 に答える 1

1

holderAおよびのデータの正確な形式を知ることが重要holderBです。データ構造に対応するjsonReaderを定義する必要があります。

このオプションを使用する場合mtype: 'POST'、返されたデータをキャッシュできず、「#GridA」と「#GridB」の入力に対して異なるリクエストが実行されることを理解する必要があります。したがって、1つのアクションで2つの応答を組み合わせてもメリットはありません。

さらに、ユーザーがたとえば「#GridA」の列「Name」の列ヘッダーをクリックすると、もう1つのリクエストがURLに送信されます"/MyController/MyActionresult"。リクエストでは、パラメータの値はsord最初のリクエストの「asc」ではなく「desc」になります。ユーザーがページサイズを250から500に変更した場合、またはユーザーが表示する必要のあるページを変更した場合にも、サーバーへの新しい要求が送信されます。

ページ上にあるすべてのグリッドに対して個別のアクションを実行することには意味があることを説明しようとしました。すべてのデータが表示されない場合や、サーバー側の並べ替えとページングが実装されている場合は、すべてを1つにまとめてもあまり意味がありません。

于 2012-06-14T13:42:48.090 に答える