jqGrid 将字段从文本切换为下拉列表

2024-06-18

我有一个 jqGrid,其中有一些列,其中 1 列是从数据库填充的下拉列表(选择)。

我想要的是:当我不在带有下拉列表的编辑模式列时,只需显示必须从查询中获取的文本,而当我处于编辑模式时,它应该显示下拉列表。

就像这里一样:http://www.trirand.com/blog/jqgrid/jqgrid.html http://www.trirand.com/blog/jqgrid/jqgrid.html进入行编辑/输入tipyes

这是我的网格的代码:

<script type="text/javascript">
    var lastsel;

    $(document).ready(function () {
        $.getJSON('@Url.Action("ConstructSelect")', function (data) {
            setupGrid(data);
        });
    });
    function setupGrid(data) {
        jQuery(document).ready(function () {
            jQuery("#list").jqGrid({

                url: '@Url.Action("GetStoreList")',
                datatype: 'json',
                mtype: 'GET',
                colNames: ['Butiks kategori', 'Butik Navn', 'By', 'Sælger'],

                colModel: [
                        { name: 'Id', index: 'Id', width: 50 },
                        { name: 'Butiks Kategori', index: 'StoreId', width: 200, edittype: 'text', align: 'center', editable: false },
                        { name: 'Buttiks Navn', index: 'StoreName', width: 200, edittype: 'text', align: 'center', editable: false },
                        { name: 'Country', index: 'Country', width: 80, sortable: true, editable: true, edittype: "select", editoptions: { value: data }}],


                onSelectRow: function (id) {
                    if (id && id !== lastsel) {
                        jQuery('#list').jqGrid('restoreRow', lastsel);
                        jQuery('#list').jqGrid('editRow', id, true);
                        lastsel = id;

                    }
                },
                editurl: '@Url.Action("GridSave")',
                rowNum: 50000,
                rowList: [5, 10, 20, 50],
                pager: '#page',
                sortname: 'Id',
                sortorder: "desc",
                viewrecords: true,
                height: "500px",
                imgpath: '/scripts/themes/base/images'
            });
            jQuery("#list").jqGrid('navGrid', "#page", { edit: false, add: false, del: false });
        });
    }
</script>

附:我一回家就链接代码

UPDATED:谢谢你的回答,我是jq新手,所以我犯了很多错误。但现在我回到了以前的位置,下拉列表没有填充数据。我按照你说的清理了代码,所以现在看起来像这样:

顺便提一句。 ConstructSelect 返回字符串列表

jQuery(document).ready(function () {
    jQuery("#list").jqGrid({
        url: '@Url.Action("GetStoreList")',
        ajaxSelectOptions: { type: "POST", dataType: "json" },
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Butiks kategori', 'Butik Navn', 'By', 'Sælger'],
        colModel: [
            { name: 'Kategori', index: 'Kategori', width: 50, key: false},
            { name: 'Navn', index: 'Navn', align: 'center', editable: false },
            { name: 'By', index: 'By', align: 'center', editable: false },
            { name: 'Sælger', index: 'Sælger', editable: true, edittype: "select",
                editoptions: { dataUrl: '@Url.Action("ConstructSelect")',
                buildSelect: function (data) {
                    var response = jQuery.parseJSON(data.responseText);
                    var s = '<select>';
                    if (response && response.length) {
                        for (var i = 0, l = response.length; i < l; i++) {
                            var ri = response[i];
                            s += '<option value="' + ri + '">' + ri + '</option>';
                        }
                    }
                    return s + "</select>";
                }
            }
        }],
        onSelectRow: function (id) {
            if (id && id !== lastsel) {
                jQuery('#list').jqGrid('restoreRow', lastsel);
                jQuery('#list').jqGrid('editRow', id, true);
                lastsel = id;
            }
        },
        editurl: '@Url.Action("GridSave")',
        rowNum: 50000,
        rowList: [5, 10, 20, 50],
        pager: '#page',
        sortname: 'Id',
        sortorder: "desc",
        viewrecords: true,
        height: "900px"
    });
    jQuery("#list").jqGrid('navGrid', "#page", {edit:false, add:false, del:false});
});

好的,需要稍作修改才能使其正常工作:

var response = typeof(data) === "string" ? jQuery.parseJSON(data.responseText):data;

显然我必须告诉 buildselect 你想要修改的数据是 String

但我仍然有一个问题,它从一开始就没有显示哪些卖家已被选择!

好吧,重启后它神秘地工作了......现在已经解决了


你需要做的是使用

editoptions: { dataUrl: '@Url.Action("ConstructSelect")' }

代替

editoptions: { value: data }

取决于操作的输出格式ConstructSelect您可能需要使用额外的属性buildSelect of the editoptions。 jqGrid 期望服务器响应 HTTP 'GET' 请求dataUrl将是代表的 HTML 片段<select>。例如:

<select>
    <option value="de">Germany</option>
    <option value="us">USA</option>
</select>

如果服务器返回其他格式的数据,例如JSON数据

["Germany","USA"]

or

[{"code":"de","display":"Germany"},{"code":"us","display":"USA"}]

您可以编写 JavaScript 函数,将服务器响应转换为 HTML 片段<select>并设置属性的值buildSelect到函数。

In 答案 https://stackoverflow.com/questions/4101116/asp-net-mvc-post-call-returning-string-need-help-with-format-for-jqgrid/4102155#4102155您将找到该函数的示例。

如果您的操作仅支持 HTTP POST 而没有 GET,您将不得不使用ajaxSelectOptions: { type: "POST" }另外,要覆盖相应参数的类型ajax要求。同样的方法也可以覆盖其他的ajax参数。例如你可以使用

ajaxSelectOptions: { type: "POST", dataType: "json"}

(默认值是type : "GET" and dataType: "html")

对代码的一些其他小注释:

  • 你不应该放置$(document).ready(function () {在另一个里面$(document).ready(function () {.
  • You use 'Id'代替'id'。所以jqGrid不会找到 the id财产。您可以 a) 重命名'Id' to 'id'b) 包括附加参数jsonReader: {id: 'Id'}c) 包括附加属性key: true在列的定义中'Id'。任何一种方式都可以解决所描述的问题。
  • 您可以删除默认属性,例如edittype: 'text', sortable: true or editable: false. See jqGrid 文档 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colmodel_options它描述了所有的默认值colModel特性。
  • 你应该删除imgpathjqGrid的参数。该参数不存在,因为 jqGrid 的许多版本(请参阅here http://www.trirand.com/jqgridwiki/doku.php?id=wiki:upgrade_from_3.4.x_to_3.5#options).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jqGrid 将字段从文本切换为下拉列表 的相关文章

  • jqgrid添加后如何清除添加表单中的自动完成框内容

    jqGrid 添加表单包含使用以下代码的自动完成框 如果新行添加到 jqgrid 自动完成字段不会被清除 仍然显示添加的行内容 简单的文本框列已正确清除 如何清除自动完成框 var grid grid grid jqGrid url Get
  • 在 MVC 应用程序中显示 jqGrid 页脚行中的数据

    我需要帮助在 jqGrid 页脚行中显示数据 这是我在服务器上的配置 注意用户数据 小时 line Format the data for the jqGrid var jsonData new total totalPages page
  • 重新加载不适用于 jqgrid

    以下代码不会重新加载网格 myjqgrid trigger reloadGrid 如果我理解正确的话 即使数据没有更改 它也应该进行 ajax 调用并重新加载网格 HTML table table div div JSON colModel
  • 使用 jqGrid 的 ASP.NET MVC 路由

    我正在尝试创建一个指向 url 的链接 例如首页 详情 1在 jqGrid 列中 文档显示 showlink baseLinkUrl showAction show addParam key 2 注意 addParam 应该包含 例如 格式
  • 当选择更改时使用 JQuery 进行检测

    我有一个 Jqgrid 它动态生成这样的选择
  • JQGrid - 在编辑表单中显示附加列

    我有一个 JQGrid 表 有 30 多个列 我认为这些列的内联编辑对用户来说并不友好 所以我想在网格模式下显示几列 并仅当用户打开该行的编辑表单时显示所有列 这可能吗 在教程中找不到这个 先感谢您 如果你想show并且不要编辑列 然后使用
  • 如何将函数绑定到DOM事件一次且仅一次,以便在事件触发时不会再次执行?

    所以我有以下形式的锚标签 a href link 我在页面加载时应用以下内容 我的意思是 文档准备就绪 jQuery a rel Tab click function e e preventDefault then I do some st
  • jqgrid,调用URL带参数为Json返回

    我的 aspx 页面上有以下代码 jQuery listFondos jqGrid url PorMyController LoadGridData datatype json mtype GET colNames col1 col2 et
  • 如何使用 jqGrid 在查询字符串周围添加单引号

    我在用着jqGrid向用户显示一些数据 我希望这个网格可以排序 但是 jqGrid 发送的数据并不完全是我需要的 这是 jqGrid 现在发送的查询字符串 http local MyService svc GetData search fa
  • JQUERY 中用于加载 JQGRID 的选项卡

    我正在使用 jqgrid 制作网格 我想在我的应用程序中创建选项卡 单击选项卡应打开一个网格 选项卡的名称应显示在页面顶部 当我单击另一个选项卡时 它应该加载另一个网格 网格应该加载在同一页面上 并且选项卡也应该始终出现在页面上 我已经创建
  • jqgrid长文本换行

    在jqgrid中 我们从数据库获取长文本 但在JQgrid中显示时需要换行 有什么方法可以换行长文本 没有任何空格 我们只有 110px 的空间用于收款人姓名字段 因为我们有多个列需要显示 我们的代码就像 name firstPayeeNa
  • JqG​​rid PHP:通过工具栏过滤时突出显示结果

    我想在使用过滤器工具栏时突出显示搜索结果 我尝试使用该解决方案Oleg https stackoverflow com users 315935 oleg and 阿布舍克 西蒙 https stackoverflow com users
  • jqGrid 将字段从文本切换为下拉列表

    我有一个 jqGrid 其中有一些列 其中 1 列是从数据库填充的下拉列表 选择 我想要的是 当我不在带有下拉列表的编辑模式列时 只需显示必须从查询中获取的文本 而当我处于编辑模式时 它应该显示下拉列表 就像这里一样 http www tr
  • JQGrid 以编程方式选择网格行

    我有一个带有 loadonce true 的 JQGrid 所以它都是客户端 并启用了分页 比如说 20 页 我想指定一行 以编程方式 无需用户输入 并让我的网格导航到相应的页面以选择指定的行 当前的 JQGrid 可以吗 我研究了搜索和过
  • 将具体数据放在jqgrid摘要视图标题中

    我有一个工作 jqgrid 表 在标题上有摘要视图 就像我在这个 plunkr 中实现的示例一样http plnkr co edit wjIlaVMsa9vusmfhgfL1 p preview http plnkr co edit wjI
  • 如何以编程方式处理 JqGrid 事件?

    我正在使用JqG rid 的 ASP NET 包装器 http www trirand net demoaspnet aspx 我想以编程方式连接一些网格的处理程序events http www trirand com jqgridwiki
  • JqG​​rid 搜索选项:工具栏搜索与标准搜索窗口

    我想允许用户仅使用一个 sopt 设置来过滤每一列 但对于更高级的搜索 对于高级用户 我想允许他们使用内置搜索按钮 但我想覆盖 odata 中列出的各个列搜索选项 例如 我希望我的用户只有 eq 但我希望高级用户能够从 odata 中进行选
  • arcgis服务器查询结果的jqgrid json阅读器

    我需要什么样的 json 阅读器来绘制数据在 jqgrid 中 Thanks 你有一些奇怪的问题以及关于jsonReader 在当前情况下 您可以使用 jsonReader root features repeatitems false 读
  • 添加按钮,该按钮将重定向到 JQGrid 中当前行的“查看页面”

    我正在尝试添加按钮而不是View专栏但我尝试过formatter仍然按钮未加载 但其余列的记录即将到来 下面是我的代码 function grid jqGrid url Location LocationsList1 datatype js
  • jqGrid 中的时间格式

    我正在尝试在 jqGrid 中设置时间格式 这是行不通的 我想在区域设置文件中使用预定义的格式化程序 这是 col 的定义方式 name Tid index Tid width 65 editable true formatoptions

随机推荐

  • 减少重新分配[重复]

    这个问题在这里已经有答案了 我有几个关于理解的问题realloc行为 include
  • 在nodejs中解密.Net cookie

    我在 Net 中创建了一个加密的cookie 并尝试在nodejs 中解密它的内容 但是nodejs不断抛出异常 TypeError DecipherFinal失败 在 Net中 我使用带有密钥的AES加密方法 932D86BB1448EE
  • 将可变参数模板参数解压到初始值设定项列表中

    我目前正在尝试实现一个通用初始化程序以减少代码库的大小 然而 在某一时刻 我的代码看起来像这样 template
  • 如何使用 IdentityServer 4 实施 Windows 身份验证

    如何使用Identity Server 4正确实现Windows身份验证 有没有样本可以做到这一点 我查看了 IdentityServer 4 的源代码 在 AccountController 的 Host 项目中 我注意到有 Window
  • 我可以将Chocolatey安装在C盘以外的其他盘吗?

    我喜欢使用 MacPorts 而 Chocolatey 是完美的替代应用程序 但是当我使用Windows时 我只将操作系统安装在C盘上 因此如果Windows系统有任何问题 我只需格式化我的C盘即可 所以 我的所有文件都存储在D或E盘中 我
  • 无法创建异步 Main

    我正在努力使Main异步 所以我尝试 class Program static async Task Main string args Books books new Books await books AddBooksAsync wher
  • 批量消费JMS消息

    The MessageListener接口只定义了一个方法onMessage接收单个Message作为论证 我正在寻找一种方法来获得多个Messages 从队列中 以便我可以处理该批次 然后确认所有Message批次中的 s JMS世界里有
  • 如何在wpf中翻转图像

    我最近学习了如何使用 TransformedBitmap 和 RotateTransformed 类旋转 BitmapImage 现在我可以对图像进行顺时针旋转 但如何翻转图像呢 我找不到执行 BitmapImage 水平和垂直翻转的类 请
  • 在后台轮询服务器的正确方法

    假设这是可能的 我希望我的 iOS 应用程序在后台时轮询服务器 即基本上每 30 分钟检索一次 URL 的内容 并通知用户是否包含 有趣 的内容 基本上以类似的方式如果您不使用推送通知 则内置邮件客户端假定的工作方式 现在 从我到目前为止的
  • Windows 操作系统中 ST_INO(os.stat() 输出)的含义

    谁能告诉我这个值的含义是什么st ino是跑步时os stat 在 Windows 上 Python 3 5 3 在早期的 Python 版本中 它包含虚拟值 但最近发生了变化 我找不到它是如何计算 生成的 我怀疑它因文件系统 NTFS F
  • 数据库锁定在 WAL 模式下,只有读取器

    在中使用System Data Sqlite 1 0 86 0 包括SQLite 3 7 17 预写式记录 http www sqlite org wal html模式下 我在并发读取时遇到数据库锁 如果我正确理解 WAL 则不应该出现这种
  • 为什么 BigInt(largeNumber) 仍然不精确?

    I want to find the sum of all digits of a large number for example 9995 我应用 BigInt 来获取大数的幂 并使用下面的代码将其数字相加 BigInt Math po
  • Oracle 语法 - 我们是否必须在新旧语法之间进行选择?

    我在一个由大约 8 名开发人员组成的团队中负责大约 1 000 000 行源代码的代码库 我们的代码基本上是一个使用 Oracle 数据库的应用程序 但代码随着时间的推移而不断发展 我们有大量九十年代中期的源代码 团队中就我们用于查询 Or
  • 为什么 angularjs bootstrap datepicker 选择前一天?

    我在用着AngularJS引导日期选择器指令 http angular ui github io bootstrap 当我从模型中设置日期时 它会选择所选日期之前的一天
  • MySQL - 从临时表插入

    这看起来非常简单 但我坚持使用简单的插入语句 见下文 begin work CREATE TEMPORARY TABLE IF NOT EXISTS insert table AS select r resource id fr file
  • 我怎样才能知道oracle 9i中哪些值是数字

    我有这个包含 varchar 的数据库 我想知道哪些记录保存数值 我试过REGEXP COUNT和其他 但我在 9i 上运行 我认为这是针对 10g gt 我怎样才能实现这个目标 I tried select to number my co
  • 使用 R 将我的 shapefile 数据投影到传单地图上

    我 在 Win7 上 试图获取我的 shapefile 数据 Here https www dropbox com s f3d46itleoozzjz shapefiles zip dl 0是数据文件 要使用显示leaflet包裹 但没有任
  • Google Colab 显示忙碌

    我昨天在 google colab 上进行了训练过程 现在 即使重新启动运行时并中断执行后 Google Colab仍显示繁忙 我想停止当前的执行 请帮忙 从运行时菜单中选择 重新启动运行时 就足够了 如果由于某种原因不起作用 您可以通过从
  • 随机采样数组的唯一子集

    如果我有一个数组 a 1 2 3 如何随机选择数组的子集 以使每个子集的元素都是唯一的 也就是说 对于a可能的子集是 1 2 3 1 2 2 3 1 2 3 我无法生成所有可能的子集 因为 a 的实际大小非常大 因此有很多很多子集 目前 我
  • jqGrid 将字段从文本切换为下拉列表

    我有一个 jqGrid 其中有一些列 其中 1 列是从数据库填充的下拉列表 选择 我想要的是 当我不在带有下拉列表的编辑模式列时 只需显示必须从查询中获取的文本 而当我处于编辑模式时 它应该显示下拉列表 就像这里一样 http www tr