2011-10-03 102 views
1

我顯示jqGrid食譜表併爲用戶提供主 - 細節類型視圖。當用戶從網格中選擇配方時,它會在網格下方的div中顯示該配方的詳細信息。然後,我在該div內提供一個就地編輯功能。當用戶保存編輯時,我會重新顯示配方的詳細信息。這一切運作良好。現在,選擇的網格行可能有不匹配的內容的細節更新後顯示的數據,所以我做這樣的事情來更新網:更新jqGrid行時格式丟失

$.ajax({ 
    type: "GET", 
    data: "id=" recipeId, 
    url: '@Url.Action("GetGridDataForRecipe", "Recipe")', 
    dataType: "json", 
    success: function (result) { 
     var myGrid = $("#recipeGrid"); 
     var selRowId = myGrid.jqGrid('getGridParam', 'selrow'); 
     myGrid.jqGrid('setRowData', selRowId, result); 
    } 
}); 

我的控制器動作看起來像這樣:

public JsonResult GetGridDataForRecipe(int id) 
{ 
    // ... 
    var recipeData = context.recipes.Where(m => m.RecipeId == id).Select(row => new 
    { 
     RecipeId = row.RecipeId, 
     RecipeName = row.RecipeName, 
     RecipeDate = row.RecipeDate, 
    }).First(); 
    return Json(recipeData, JsonRequestBehavior.AllowGet); 
} 

所以,更新工作方式幾乎完全與該RecipeDate進入最終的例外越來越顯示像這樣:

/Date(1317182400000)/ 

,而不是格式化的日期:

10/03/2011 

我在colModel指定的,當我返回網格行:

{ name: 'RecipeDate', index: 'RecipeDate', width: 120, align: 'left', sorttype: 'date', 
    formatter: 'date', formatoptions: { newformat: 'm/d/Y'}, 
... 

這裏有顯示的網格時我指定的colModel,我以後更新的數據之間的脫節。我是否需要重新指定這些信息?我怎麼做?

回答

1

我需要重新指定此信息嗎?

是的。

我該怎麼做?

你可以在你從你的控制器動作返回匿名對象執行此格式:

var recipeData = context.recipes.Where(m => m.RecipeId == id).Select(row => new 
{ 
    RecipeId = row.RecipeId, 
    RecipeName = row.RecipeName, 
    RecipeDate = row.RecipeDate.ToString("MM/dd/yyyy"), 
}).First(); 
+0

感謝達林 - 現在,這比我想象的要簡單得多。很棒。 – itsmatt

+0

這個答案需要在服務器端複製格式化代碼,這遠遠不夠理想。我會繼續尋找。 – DCShannon

0

找到一個answer on GitHub

添加$ .jgrid.formatter.date.reformatAfterEdit = true;在我調用setRowData之前,現在似乎是一個很好的解決方法。

我添加了這段代碼,我的日期現在格式化,如我所料。