0

このような列が生成された jqgrid があります (ASP.NET MVC 3 プロジェクト内)。彼らはインライン編集を使用します:

@foreach (var template in Model.TemplateList.Where(m => m.Type == 2))
{
<text>
  { name: 'A'+'@template.ID', index: 'A'+'@template.ID', width: 40, align: 'left',
       editable: true, 
       editoptions: { dataEvents: [{ type: 'keyup', fn: function (e) {
       var $tr = $(e.target).closest("tr.jqgrow"), rowId = $tr.attr("id");
       var nextRow = parseInt(rowId, 10) + 1;
       var total = parseInt(e.target.value, 10);
       if (isNaN(total)) {
           total = 0;
       }
       ChangeValue('A'+'@template.ID', total, $tr);
   }}]}},
 </text>
 }

列は生成され、保存しようとするまではうまく機能します。コントローラーに値を渡そうとしていますが、うまくいかないようです。私はすでにすべての列に同じ名前を付けて配列に入れようとしました:

... name: 'templateColumns', index: 'A'+'@template.ID', width: 40, align: 'left', ...

そしてコントローラーで:

public ActionResult SaveRow(string[] templateColumns)

しかし、うまくいきませんでした(最後の列の値しか取得できませんでした)

4

1 に答える 1

1

すべての列に同じ名前を付けることはできないと思います。コメントで提供したリンクを確認してください。''A'+'@template.ID'' として 1 つの列名を指定し、それが A1、A2 のようにレンダリングされると仮定すると、コントローラーでこのようなもののみを受け入れる必要があります。

public ActionResult SaveRow(string A1, string A2)

コントローラーの列名とパラメーターは同じである必要があります。

于 2012-08-02T14:23:00.827 に答える