Раскрывающийся список jqGrid dataUrl не обновляется - PullRequest
1 голос
/ 14 сентября 2011

Я новичок в веб-разработке и работаю над своим первым приложением ASP.NET MVC 3. Я использую jqGrid и заметил, что обновление страницы не обновляет значения в раскрывающемся списке, пока я не открою ту же страницу в другой вкладке, а затем при обновлении первой вкладки появятся измененные значения.

У меня есть действие контроллера, которое выглядит так:

public JsonResult FavoriteToppings()
{
   var all = GetFavoriteToppings();
   return Json(all, JsonRequestBehavior.AllowGet);
}

и у меня часть определения jqGrid выглядит так:

{ name: 'ToppingID', index: 'ToppingID', width: 200,
    editable: true, align: 'left', edittype: 'select', stype: 'select',
    editoptions: {
        dataUrl: '@Url.Action("FavoriteToppings", "Dessert")',
        buildSelect: createSelectList
    },
    searchoptions: {
        dataUrl: '@Url.Action("FavoriteToppings", "Dessert")',
        buildSelect: createSelectList,
        sopt: ['eq']
    }
},

и createSelectList выглядит так:

createSelectList = function (data) {
    var response, s = '<select>', i, l, ri;
    if (typeof (data) === "string") {
        //var leng = data.length - 1;
        response = jQuery.parseJSON(data);
    }
    else {
        response = jQuery.parseJSON(data.responseText);
        s += '<option value="">Select...</option>';
    }

    if (response && response.length) {
        for (i = 0, l = response.length; i < l; i += 1) {
            ri = response[i];
            s += '<option value="' + ri + '">' + ri + '</option>';
        }
    }
    return s + '</select>';
}

Я заметил это при редактировании одного из названий топинга. Я изменил «Hot Fugde» с ошибкой на «Hot Fudge» и сохранил его. Базовые данные в таблице обновляются, чтобы показать правильно написанное начертание (т. Е. Все строки правильно отражают изменение), когда я обновляю страницу, а раскрывающийся список фильтров - нет. Это действие вообще не вызывается после первого изменения.

Когда я открываю одну и ту же страницу на другой странице браузера, вызывается действие. После этого при обновлении первой вкладки в списке выбора будет отображаться правильно записанная запись.

Возможно, я просто ошибаюсь. Любое руководство?

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Я думаю, что вы должны использовать

ajaxSelectOptions: { cache: false }

параметр jqGrid для установки дополнительного параметра cache: false для jQuery.ajax , используемого jqGrid, если он получает данные с сервера из dataUrl.

1 голос
/ 15 сентября 2011

Я заметил, что политики кэширования варьируются от браузера к браузеру (кажется, что у chrome самая агрессивная политика кэширования).Поведение повторяется во всех браузерах?Ctrl-F5 работает?

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