2012-08-02 51 views
0

我有一个像这样的生成列(在ASP.NET MVC 3项目中)的jqgrid。他们使用内联编辑:保存动态生成的jqgrid列

@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) 

,但它没有工作(我只得到了价值最后一栏)

+0

你能告诉我你是如何保存行,你发送一些ajax请求或使用saveRow或EditRow方法? – 2012-08-02 14:12:05

+0

它不清楚你如何保存行,你可以放一些关于如何保存行的代码 – 2012-08-02 14:13:14

+0

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colmodel_options阅读这个名字应该对所有列都是唯一的。 – 2012-08-02 14:19:40

回答

1

我觉得你不能在所有列上都有相同的名字,请查看我给你评论的链接。现在,如果您将一个列名称命名为''A'+'@template.ID'',并假设它呈现为A1,A2,那么在您的控制器中,您应该只接受类似这样的内容。在控制器

public ActionResult SaveRow(string A1, string A2)

你的列名和参数应该是相同的。