Форматирование потеряно при обновлении строки jqGrid - PullRequest
1 голос
/ 04 октября 2011

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

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Нужно ли повторно указывать эту информацию?

Да.

Как мне это сделать?

Вы можете выполнить это форматирование в анонимном объекте, который вы возвращаете из действия вашего контроллера:

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 голосов
/ 29 июля 2015

Найден ответ на GitHub .

Добавление $ .jgrid.formatter.date.reformatAfterEdit = true;прежде чем я вызову setRowData, кажется, это хорошая работа сейчас.

Я добавил этот код, и теперь мои даты выходят в формате, как я ожидаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...