我从控制器返回一个字符串jqGrid,但下拉列表没有填充。
View上的网格代码:
{
name: 'FundCode', index: 'FundCode', editable: true, edittype: "select",
editoptions: {
dataUrl: '@Url.Action("PopulateDdl", "FundCode")'
},
buildSelect: function (response) {
var data = typeof response === "string" ? $.parseJSON(response.responseText) : response, s = "<select>";
s += '<option value="0">--Select Fund--</option>';
$.each(data, function() {
s += '<option value="' + data + '">' + data + '</option>';
})
}
}
返回字符串的控制器方法:
[HttpGet]
public JsonResult PopulateDdl()
{
var fundCodes = repo.GetFundCodes();
var codeList = new List<string>();
foreach (var t in fundCodes)
{
codeList.Add(t.FundCode.ToString());
}
return Json(codeList, JsonRequestBehavior.AllowGet);
}
这会返回一个列表到网格,但是我收到一个错误,“语法错误,无法识别的表达式:[”1“,”2“,”3“等]
我也试过将MVC SelectListItem作为相同的结果返回。
更新 - 我添加了结束选择。它没有解决问题。然后我注意到'buildSelect'与dataUrl不在同一组中。我移动它,错误改变了。现在错误是“Unexpected token u”,它说它在第1行。
新视图代码:
{
name: 'FundCode', index: 'FundCode', editable: true, edittype: "select",
editoptions: {
dataUrl: '@Url.Action("PopulateDdl", "FundCode")',
buildSelect: function (response) {
var data = typeof response === "string" ? $.parseJSON(response.responseText) : response, s = "<select>";
s += '<option value="0">--Select Fund--</option>';
$.each(data, function () {
s += '<option value="' + data + '">' + data + '</option>';
})
s += "</select>";
}
}
},
答案 0 :(得分:3)
您的问题可能在{
name: 'FundCode', index: 'FundCode', editable: true, edittype: "select",
editoptions: {
dataUrl: '@Url.Action("PopulateDdl", "FundCode")'
},
buildSelect: function (response) {
var data = typeof response === "string" ? $.parseJSON(response.responseText) : response, s = "<select>";
s += '<option value="0">--Select Fund--</option>';
$.each(data, function() {
s += '<option value="' + data + '">' + data + '</option>';
})
s += '</select>'; // <<<<<<< close the select
}
}
,您正在打开标记但从未关闭它,这可能会破坏您的HTML,请尝试关闭选择可以解决问题:
response
修改强>
当给予JSON.parse的值实际上未定义时,通常会看到该错误。所以,我会检查试图解析它的代码 - 很可能你没有正确解析实际的字符串:
Json
变量中,如果是,那么您就不应该
首先使用response.responseText s
函数后返回数组,因此很可能是这种情况。 Charts("Chart1").SeriesCollection(1).XValues =_Worksheets("Sheet1").Range("B1:B5")
才能使其生效