首页 > 后端开发 > C++ > 为什么我的 ASP.NET MVC jqGrid 下拉列表显示'未定义”值?

为什么我的 ASP.NET MVC jqGrid 下拉列表显示'未定义”值?

DDD
发布: 2025-01-11 08:45:42
原创
1010 人浏览过

Why Does My ASP.NET MVC jqGrid Dropdown Show an

解决 ASP.NET MVC jqGrid 下拉列表中的“未定义”值

在数据编辑期间动态填充 jqGrid 下拉列表时,经常会出现不需要的“未定义”值。这是由于jqGrid期望的数据结构和数据传递方式不一致造成的。

正确的 jqGrid 数据格式:

下拉列表值的理想格式是:value: "FE:FedEx; IN:InTime; TN:TNT"

当前方法的问题:

当前方法使用 ASP.NET MVC 和 jQuery 的 $.ajax() 来获取下拉数据。 StringBuilder 操作检索到的数据以匹配 jqGrid 的格式,但额外的“未定义”条目仍然存在。

调试结果:

FireBug 调试表明 sb.ToString() 引入的额外引号是罪魁祸首。 jqGrid 添加了自己的引号,导致双引号和“未定义”问题。

高级解决方案:使用 dataUrlbuildSelect

不是直接操作 value 属性,更强大的解决方案是在 dataUrlbuildSelect 中使用 jqGrid 的 editoptionssearchoptions 属性。 这些允许自定义数据获取和格式化。

示例 dataUrl 操作:

<code class="language-csharp">public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}</code>
登录后复制

示例buildSelect功能:

<code class="language-javascript">buildSelect: function(data) {
    var s = '';
    if (data && data.length) {
        for (var i = 0, l = data.length; i < l; i++) {
            s += data[i] + ';'; // Assuming data[i] is already in "key:value" format
        }
        return s.substring(0, s.length - 1); // Remove trailing semicolon
    }
    return s;
}</code>
登录后复制

更新editoptions

<code class="language-javascript">{
    name: 'destinations',
    editable: true,
    edittype: 'select',
    editoptions: {
        dataUrl: '/YourController/GetDestinationList', // Replace with your controller action path
        buildSelect: function(data) {
            // ... (buildSelect function from above) ...
        }
    }
}</code>
登录后复制

重要提示:

  • 您可以使用 Json(allDestinations); 而不使用 JsonRequestBehavior.AllowGet,但您需要将 ajaxSelectOptions: { type: "POST" } 添加到 jqGrid 选项中。
  • 在较新的 jqGrid 版本中,buildSelect$.ajax() 成功处理程序中调用,使得 jQuery.parseJSON(data.responseText) 不必要。

这种修改后的方法提供了一种更干净、更高效、更不易出错的方法来管理 jqGrid 下拉列表,消除了“未定义”值的问题。 请记住将 /YourController/GetDestinationList 替换为控制器操作的实际路径。

以上是为什么我的 ASP.NET MVC jqGrid 下拉列表显示'未定义”值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板