2012-08-02 82 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)

你的列名和參數應該是相同的。