Я отображаю таблицу рецептов jqGrid и предоставляю пользователю представление типа master-details. Когда пользователь выбирает рецепт из сетки, он отображает детали этого рецепта в 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
, который я указал, когда отображается сетка, и данными, которые я обновляю позже. Нужно ли повторно указывать эту информацию? Как мне это сделать?