保存动态生成的jqgrid列

时间:2012-08-02 13:44:24

标签: javascript asp.net-mvc-3 jqgrid

我有一个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)

但它不起作用(我只获得了最后一列的值)

1 个答案:

答案 0 :(得分:1)

我认为你不能为所有列提供相同的名称,请查看我在评论中给出的链接。现在,如果你给一个列名称''A'+'@ template.ID''并假设它被渲染为A1,A2,那么在你的控制器中你应该接受这样的东西。

public ActionResult SaveRow(string A1, string A2)

控制器中的列名和参数应该相同。