2011-10-20 12 views
1

エンティティを選択するためにjqGridを使用したHTMLフォーム(Razor)が用意されています(たとえば、顧客を想定してください)。 jqGridがどのように見えるのお客様:jqGrid:選択したIDをHTMLフォームパラメータとして渡します。

jQuery("#ajaxGrid").jqGrid({ 
    url: '@Url.Action("CustomersData")', 
    datatype: 'json', 
    mtype: 'GET', 
    jsonReader: { repeatitems: false, id: "Id" }, 
    colNames: ['Id', 'Name'], 
    colModel: [ 
     { name: 'Id', editable: true, sortable: false, hidden: false }, 
     { name: 'Name', editable: true, sortable: false, hidden: false } 
    ], 
    multiselect: true, 
    viewrecords: true, 
    rowNum: 5, 
    width: '850', 
    height: '15em' 
}); 

だから、グリッドは複数選択することができます。

問題は、選択された顧客IDを(IEnumerableとして)サブミット時(適切な送信アクションに)に渡す方法です。

私はそれがフォームパラメータとして選択されたすべてのIDを設定することによって行うことができると思います。私は配列からデータをコピーする方法を知らない:

var ids = jQuery("#ajaxGrid").getGridParam('selarrrow'); 

とHTMLフォームの隠し値。

答えて

2

あなたが正しいことを理解している場合は、例えば、選択した行のIDをids.join(',')にカンマで区切って文字列を作成できます。次に、jQuery.val(newValue)を使用して、新しいハーフ値を隠しフィールドに設定することができます:$("#hiddenFieldId").val(ids.join(','));

+0

[OK]をクリックします。いつ私はそれをしなければならないのですか?フォームを投稿する前に? –

+1

@ Serge:もちろん、送信または投稿する前に非表示フィールドを設定する必要があります。これを行うための最良の場所は、プログラムの構成に依存します。確実に動作する方法は、 'onSelectRow'イベントハンドラの中に隠しフィールドを設定することです。 – Oleg

+0

@@オレグ、ありがとう!できます! =) –

関連する問題