我是 Web 开发新手,正在开发我的第一个 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']
}
},
and 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”并将其保存下来。当我刷新页面但过滤器下拉列表没有更新时,表中的基础数据会更新以显示正确拼写的顶部(即所有行都正确反映更改)。在第一次获取更改后根本不会调用该操作。
当我在浏览器的不同页面中打开同一页面时,就会调用该操作。之后,刷新第一个选项卡将导致拼写正确的条目显示在选择列表中。
也许我只是错误地处理了这个问题。有什么指导吗?