1

ASP .NET MVC2 ページには、注文ヘッダー データ (注文番号、顧客、注文データなど) が含まれています。

<form id='_form' class='form-fields' action='' onsubmit='SaveDocument();return false;'>
<input id='Number' name='Number' />

<select id='PaymentTerm' name='PaymentTerm'>
<option value=''></option><option value='0'>Cash</option>
<option value='10'>10 days</option>
</select>

</form>

jqgridに表示される行を並べ替えます。

jqgridがデータを埋めるように、コントローラーからのjson日付から注文headcerデータを埋める方法を探しています。リクエストを最小限に抑えるには、jqgrid データ リクエストでヘッダー データを返すのが最善かもしれません。この追加パラメーターの documentId がコントローラーに渡されます。

GetData は、ドキュメント ヘッダーをドキュメント オブジェクトの名前と値のペアとして返します。これらの値をブラウザのjqgrid loadcompleteまたは他の場所のフォーム要素に割り当てる方法は?

public JsonResult GetData(int page, int rows, string filters,
          int documentId )

{
    var query = ...;
    var totalRecords = query.Count();

    var documentHeader = new FormCollection();
    // In production code those values are read from database:
    documentHeader.Add("Number", 123);  // form contains input type='text' name='Number' element
    documentHeader.Add("PaymentTerm", "10"); // form contains select name='PaymentTerm' element
    ...

    return Json(new {
        total = page+1,
        page=page,
        document = documentHeader,
        rows = (from item in query
                select {
                    id = item.Id.ToString(),
                    cell = new[] {
                        item.ProductCode,
                        item.ProductName,
                        item.Quantity,
                        item.Price
                    }
                 }).ToList()
    },
    JsonRequestBehavior.AllowGet);
}
4

1 に答える 1

1

あなたの質問が正しいことを理解したら、beforeProcessingまたはloadCompleteコールバックを使用して、サーバーからの応答に基づいてフォーム データを入力できます。data両方のコールバック (beforeProcessingまたはloadComplete)の最初のパラメーターには、サーバーから返されたすべてのデータが含まれます。documentしたがって、のプロパティにアクセスできdata、サーバーと同じ形式になります。

documenttypeを使用する理由がわかりませんFormCollection。匿名型のデータを使用するのが最もネイティブに思えます。

return Json(new {
    total = page + 1,
    page = page,
    document = new {
        number = 123,
        paymentTerm = 10
    },
    rows = (...)
},
JsonRequestBehavior.AllowGet);

しかし、 の正確なタイプdocumentはおそらくそれほど重要ではありません。

内部beforeProcessingまたは同じ形式loadCompleteの対応するプロパティを使用できます。data.document例えば

beforeProcessing: function (data) {
    var hearderData = data.document;
    if (hearderData) {
        if (hearderData.number) {
            $("#Number").val(hearderData.number);
        }
        if (hearderData.paymentTerm) {
            $("#PaymentTerm").val(hearderData.paymentTerm);
        }
    }
}
于 2012-10-28T10:24:04.640 に答える