【发布时间】:2011-05-05 07:21:39
【问题描述】:
我正在尝试在用户编辑数据时动态填充 jqGrid 的下拉列表。我已经很好地工作了,但是下拉调用“未定义”中有一个值。我怀疑这是因为我将数据发送到网格的方式。我正在使用 ASP.NET MVC 2,我正在使用 jQuery 获取下拉列表的数据,如下所示:
var destinations = $.ajax({ type:"POST",
url: '<%= Url.Action("GetDestinations", "Logger") %>',
dataType: "json",
async: false,
success: function(data) {
} }).responseText;
现在,jqGrid 希望下拉菜单的值如下所示:
value: "FE:FedEx; IN:InTime; TN:TNT"
我正在使用 StringBuilder 遍历我的集合并提供 jqGrid 想要的正确字符串:
foreach (var q in query)
{
sb.Append("ID:");
sb.Append(q.Destination);
sb.Append("; ");
}
我像这样从我的控制器返回这个:
return this.Json(sb.ToString());
这一切都很好,我得到了下拉菜单所需的所有项目,但还有一个名为“未定义”的额外项目(最后一个)。
我认为问题是当我在 FireBug 中调试时,jqGrid 的结果如下所示:
value: ""ID: One;ID: Two;ID: Three;ID: Four;ID: Five;""
看看如何有两组引号。这可能是因为当我说:
sb.ToString()
它可能会生成引号,然后 jqGrid 添加第二组。但我不是 100% 的。
解决这个问题的最佳方法是什么?任何建议将不胜感激。
解决方案:
我通过使用解决了这个问题 返回 ContentResult(sb.ToString();
我想使用 Oleg 提到的 dataUrl 方法,但还没有实现。
【问题讨论】:
-
如果您尝试删除分号“;”怎么办?在末尾?只是一个想法......
-
jqGrid 需要分号来表示下拉列表中的下一项。
-
好的,我想我明白了。最后一个分号导致了问题。现在正在努力。
标签: c# asp.net-mvc jquery jqgrid