我是新来web开发和工作在我的第一个ASP.NET MVC 3应用程序。我使用jqGrid,并注意到刷新页面不会刷新下拉列表中的值,直到我打开另一个选项卡中的同一页面,然后刷新第一个选项卡将选取更改后的值。jqGrid dataUrl下拉列表不刷新
我有一个控制器的动作,看起来像这样:
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”并将其保存。当我刷新页面但过滤器下拉不显示时,表格中的底层数据得到更新以显示拼写正确的顶部(即,所有行正确反映了更改)。在第一次接受变更后,这个行为根本不会被调用。
当我在浏览器的不同页面中打开同一页面时,该操作被调用。之后,刷新第一个选项卡将导致正确拼写的条目显示在选择列表中。
也许我只是在错误地解决这个问题。任何指导?
@itsmatt:不客气!这是一个来自问题的解决方案非常简单,但人们可以花费很多时间。 :-) – Oleg