我是新來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