- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 jqGrid 通过以下代码在项目中显示订单,当我尝试使用网格上的刷新按钮刷新时,列状态的格式化程序(即函数 dropdownFormatter())将 rowObject 变量设置为未定义。
因此,当我尝试自动重新加载功能时,下拉列表不会填充正确的参数。如果我将 jqGrid 属性“loadonce”设置为 false,则可以解决此问题。
但是如果“loadonce”属性设置为 false,则下拉选择根本不会过滤网格。
jQuery("#list").jqGrid({
url:'http://192.168.0.7:8000/orders_get_open',
datatype: "json",
colNames:['Id','Order No','Address', 'Pincode', 'Phone Number', "Pickup Date", "Pickup Time", "Delivery Date", "Delivery Time", "Status", "Delivery Boys", "Actions"],
colModel:[
{name: 'order_id', index: 'order_id', hidden: true},
{name: 'order_no', index: 'order_no', width: 130},
{name: 'user_address',index: 'user_address', width: 400, search: false},
{name: 'pincode',index: 'pincode', width: 110, search: false},
{name: 'user_phone_number',index: 'user_phone_number', width: 180, search: false},
{name: 'pickup_date', index: 'pickup_date'},
{name: 'pickup_time', index: 'pickup_time'},
{name: 'delivery_date', index: 'delivery_date', width: 170},
{name: 'delivery_time', index: 'delivery_time', width: 170},
{
name: 'status', index: 'status', formatter: statusFormatter, stype: 'select', searchoptions: {
sopt: ['eq'], value: ':All;ordered:Ordered;received:Received;laundry_entry:Laundry Entry;laundry_exit:Laundry Exit;delivered:Delivered'
}
},
{name: 'delivery_boys', index: 'delivery_boys', formatter: dropdownFormatter, search: false},
{name: '', index:'', formatter: actionFormatter, search: false}
],
width: "1300",
height: "auto",
cache: false,
rowNum:10,
rowList:[10,20,30],
pager: '#pager',
loadonce: true,
sortname: 'id',
viewrecords: true,
sortable: true,
sortname: "order_no",
sortorder: "asc",
caption:"Order Details",
}).jqGrid('navGrid','#pager', {
edit:false,add:false,del:false, search: false, refresh: true
}).jqGrid('filterToolbar', {
stringResult: true, searchOnEnter: false, defaultSearch: "cn"
});
function dropdownFormatter(cellValue, options, rowObject) {
console.info(cellValue, options, rowObject);
console.log(rowObject.delivery_boy_id);
var control = "<select class='form-control'><option value>Select</option>";
$.each(cellValue, function (idx, obj){
if (obj.id == rowObject.delivery_boy_id) {
control += "<option value='" + obj.id + "' selected='selected'>" + obj.name + "</option>";
} else {
control += "<option value='" + obj.id + "'>" + obj.name + "</option>";
}
});
control += "</select>";
return control;
}
示例数据:https://api.myjson.com/bins/22vo1
jsfiddle 代码:http://jsfiddle.net/76588Lev/1/
最佳答案
您的代码在使用 name: ''
时包含一些小问题,这是不允许的,使用隐藏 order_id
,您想将其用作数据的 id,但您没有添加 key: true
属性(property)或未使用jsonReader: { id: "order_id" }
。然而你的主要问题有另一个根源。 jqGrid 仅在本地读取和保存输入数据的属性(因为 loadonce: true
),这些属性用作列。您尝试使用 delivery_boy_id
属性,在 colModel
中未使用 。因此这些值将在 rowObject
中仅在初始加载期间。
我建议您升级到最新的free jqGrid版本:首先是4.13.0。 免费 jqGrid 是 jqGrid 的分支,我在 4.7.1 版本(参见 the post)中更改许可协议(protocol)后开发了它,并在发布 4.7 后不久发布。产品名称更名为Guriddo jqGrid JS。 Guriddo jqGrid JS 是开源的商业产品(参见价格 here )。我使用 jqGrid 4.7 作为起点,并实现了许多 the wiki 中描述的许多新功能。文章和已发布的每个版本的自述文件。免费的 jqGrid 与旧版本的 jqGrid(直到 4.7)一样,在相同的许可证(MIT 和 GPLv2)下提供。
免费 jqGrid 的新功能可能对您有帮助,如下:
cellattr
和rowattr
回调和稍后的本地数据(可使用 getLocalRow
方法)。例如,您可以删除不需要的隐藏 order_id
列并添加选项 additionalProperties: ["order_id", "delivery_boy_id"]
.jsonReader: "order_id"
和prmNames: { id: "order_id" }
选项通知 jqGrid 使用输入数据的属性作为 rowid 的值(网格的 id
元素的 <tr>
属性的值)。forceClientSorting: true
loadonce: true
之外的选项。它强制在显示第一页数据之前对数据进行本地排序和过滤。如果您从第三方源或文件加载数据,并且无法更改数据的排序顺序,则该选项非常实用。使用情况forceClientSorting: true
您需要的选项只需添加 sortname
和sortorder
它指定需要对数据进行排序的列名称或附加属性的名称。index
所有属性 colModel
项目。iconSet: "fontAwesome"
和guiStyle: "bootstrap"
具有与免费 jqGrid 相同的外观。如果你想改变 jqGrid 元素的一些颜色,你只需要添加一些额外的 CSS 规则。请参阅the demo来自4.13.0版本的自述文件。生成的演示将修改为以下内容:http://jsfiddle.net/OlegKi/76588Lev/6/ .
我建议您另外考虑将列替换为带有操作按钮的自定义格式化程序 formatter: "actions"
与自定义按钮。这是免费 jqGrid 的又一选择。您可以在 the answer 找到更多详细信息和相应的演示。 .
关于javascript - jqGrid 返回 rowObject 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35799189/
注意:根据 ECMAScript5.1, section 15.1.1.3 , window.undefined 是只读的。 现代浏览器正确地实现了这一点。例如:Safari 5.1、Firefox
我用谷歌搜索,检查了所有常见的响应。这些脚本似乎顺序正确(它们在 the demo 中以相同的顺序工作)但由于某种原因,当我尝试实现它时,我得到了错误。 我有一个 paste bin用我完整的页面代码
我有以下代码: simpleExample.html: Simple example Open the Console. js/simpleExampleJS.
所以我对 typescript 很陌生。 这是我的 tsconfig.json 文件的样子, 我什至不知道那些“例子”是从哪里来的 这是我在浏览器中遇到的错误 这是我的 package.json 最佳
我被 TypeScript 错误困住了: Failed to compile. undefined TypeScript error in undefined(undefined,undefined)
我已将 onlcick 事件附加到表单的提交按钮以覆盖默认的 POST 请求,但在使其正常工作时遇到了一些问题。 我想要的是点击添加到购物车的商品,但只显示模式确认而不刷新页面。 这段代码在我的静态示
我已经完成了这个link .但是给定的解决方案并没有解决我的问题。所有经验丰富的人都建议使用 getActivty().getApplicationContext()。但我使用的是普通类(class)
我有一个应用程序,其中 webpack 配置为模块 bundler ,babel 作为我的 js 编译器。全部都在 Node 引擎上。我设置当我运行 npm run dev 时,将会发生以下流程: w
我正在尝试在浏览器中呈现网址的 JSON 数据,但它在 div 中显示为 undefined, undefined .当我将其响应放入console.log时对象及其数据出现,因此它出现在控制台和浏览
为什么我会收到 Cannot invoke an object which is possibly 'undefined'即使在我检查了 func 之后,Typescript 也会出错引用不是未定义的
我想使用airbnb的eslint修改我的代码结构。我已遵循 eslint-config-airbnb 中给出的说明。启动命令后npm run lint,结果由 'fetch' is not Defi
这个问题在这里已经有了答案: What is the consequence of this bit of javascript? (4 个答案) 关闭 9 年前。 我看到一些 jQuery 脚本嵌
我一直收到这个 pouchDB 错误,我不知道这是怎么回事。 Error: connect ENFILE 127.0.0.1:5984 - Local (undefined:undefined)
import os from os.path import abspath, dirname import sys # Set up django project_dir = abspath(dirn
在 javascript 中,要检查变量是否从未创建过,我们只需执行 if (typeof MyVariable !== "undefined"){ ... } 我想知道如何在 CoffeeScrip
我正在尝试编译 FreeLing,它使用 CMake 来检测 Boost。这是负责它的代码: find_package(Boost COMPONENTS regex filesystem thre
我收到“JQUERY 未定义”错误。你有什么想法吗(代码如下)。 $(document).ready(function() { window.print();
无论我是否将 jQuery $.ajax 调用放入 $(document).ready(function() { 中,我都会收到此错误。这是在 ASP.NET MVC .cshtml 文件上.
我正在构建的网站上遇到问题,但数据表不存在加载(在服务器上)但在本地主机(xamp)上工作正常。 Firefox 会抛出错误“$ 未定义”。 我用谷歌搜索了这些错误,我发现一个 friend 的解决方
当我在 $(document).ready 之前明确包含 jQuery 库时,我无法弄清楚为什么它仍然无法识别 jQuery 语法
我是一名优秀的程序员,十分优秀!