我显示了一个jqGrid食谱表,并为用户提供了一个主 - 详细信息类型视图。当用户从网格中选择配方时,它会在网格下方的div中显示该配方的详细信息。然后,我在div中提供了就地编辑功能。当用户保存编辑内容时,我会将详细信息重新显示给配方。这一切都运作良好。现在,选定的网格行可能包含与更新后详细信息显示的数据不匹配的数据,因此我执行类似这样的操作来更新网格:
$.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
与我稍后更新的数据之间存在脱节。我是否需要重新指定此信息?我该怎么做?
答案 0 :(得分: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();
答案 1 :(得分:0)
Found an answer on GitHub.
Adding $.jgrid.formatter.date.reformatAfterEdit = true; before I call setRowData seems to be a good work around for now.
I added this code and my dates now come out formatted as I expect.