我正在尝试在用户编辑数据时动态填充jqGrid的下拉列表.我有很多工作,但下拉调用"undefined"中有一个值.我怀疑这是因为我将数据发送到网格的方式.我正在使用ASP.NET MVC 2,我正在使用jQuery获取下拉数据,如下所示:
var destinations = $.ajax({ type:"POST",
url: '<%= Url.Action("GetDestinations", "Logger") %>',
dataType: "json",
async: false,
success: function(data) {
} }).responseText;
Run Code Online (Sandbox Code Playgroud)
现在,jqGrid想要下拉列表的值格式如下:
value: "FE:FedEx; IN:InTime; TN:TNT"
Run Code Online (Sandbox Code Playgroud)
我正在使用StringBuilder迭代我的集合并提供jqGrid想要的正确字符串:
foreach (var q in query)
{
sb.Append("ID:");
sb.Append(q.Destination);
sb.Append("; ");
}
Run Code Online (Sandbox Code Playgroud)
我从我的控制器返回这个:
return this.Json(sb.ToString());
Run Code Online (Sandbox Code Playgroud)
这都是膨胀,我获得了下拉列表所需的所有项目,但是有一个名为"undefined"的额外项目(最后一项).
我认为问题是当我在FireBug中调试时,jqGrid的结果如下所示:
value: ""ID: One;ID: Two;ID: Three;ID: Four;ID: Five;""
Run Code Online (Sandbox Code Playgroud)
看看有两套报价.这可能是因为当我说:
sb.ToString()
Run Code Online (Sandbox Code Playgroud)
它可能生成引号,然后jqGrid添加第二组.但我不是百分之百.
处理这个问题的最佳方法是什么?任何建议将不胜感激.
解:
我通过使用返回ContentResult(sb.ToString();
我想使用dataUrl方法作为Oleg提到但尚未完成工作.
考虑下面的JavaScript:
var v;
if (this.children.length > 0) {
v = this.firstElementChild.value;
}
Run Code Online (Sandbox Code Playgroud)
这适用于FireFox和Chrome的现代版本,但this.firstElementChild.value在Internet Explorer 7-8中引发异常.我还有另一种方法可以让它适用于所有浏览器吗?
我选择了以下内容:
v = (this.firstElementChild || this.children[0] || {}).value - 谢谢大家.
所以我有一个带有以下属性的NHibernate映射文件:
<property name="FullName" column="FullName" type="string" not-null="true" />
Run Code Online (Sandbox Code Playgroud)
例如,如果我设置length ="50",NHibernate将在插入数据库时截断字符串.如果我删除了length属性,那么该数据库会抛出异常; 说不能插入记录.这是正常的行为吗?如果是这样,长度属性的目的是什么.也许我已经错误地配置了NHibernate或者没有意识到这种情况.任何想法/想法都会很棒.