访问jqGrid自定义格式化程序中的行数据

Mar*_*eon 5 formatting jquery jqgrid

我们有一个数据类型为json的网格.

我们有以下自定义格式化程序:

function opsFormatter (cellvalue, options, rowObject){
    '<a title=MA href=javascript:showDialog(' + rowObject[5] + ')>MA<a>' + '&nbsp;&nbsp;';
}
Run Code Online (Sandbox Code Playgroud)

而不是rowObject[5]有任何对象符号,我们可以指定实际的列名称("帐户")?即:rowObject.account.

这是网格定义:

$("#grid-pos").jqGrid({
    colNames:['Product', 'Type','Expiry', 'Put Call', 'Strike', 'Account','Long','Short', 'Open Qty', 'LTD', 'Operations'],
    colModel :[
               {name:'product', index:'product', width:75, sortable:false},
               {name:'type', index:'type', width:50, align:'right', sortable:false},
               {name:'expiry', index:'expiry', width:60, align:'right',stype:'select', searchoptions:{dataUrl:'expiry_select.htm'}, sortable:false},
               {name:'putCall', index:'putCall', width:65, sortable:false},
               {name:'strike', index:'strike', sorttype: 'float', width:70, sortable:false},
               {name:'account', index:'account', width:70, sortable:false},
               {name:'long', index:'long', width:55, align:'right', sortable:false},
               {name:'short', index:'short', width:55, align:'right', sortable:false},
               {name: 'openQty', index:'openQty', width:80, align:'center', formatter:closeoutFormatter, sortable:false},
               {name:'LTD', index:'LTD', width:65, align:'right', sortable:false},
               {index:'operations', width:105, title:false, align: 'center', formatter:opsFormatter, sortable:false}
               ],
               pager: '#div-pos-pager',
               caption: 'Positions'
});  
Run Code Online (Sandbox Code Playgroud)

??

Ole*_*leg 11

对我来说似乎绝对正确的行为.该参数的值rowObject对象具有如在的的"name"属性中定义的相同名称的属性colModel.该物业account是从那里.我认为误解来自自定义格式化程序的以下部分文档:

rowObject - 是以datatype选项确定的格式表示的行数据....如果我们有数据类型:json/jsonstring - rowObject是数组,根据jsonReader的规则提供

可能会误解.在JavaScript rowObject.account中可以用作rowObject["account"],但不能用于rowObject[5]访问account属性rowObject.在文档中只是不清楚书面句子.如果您是母语为英语的人,您可以重新制定文本,以免产生误解.文档是wiki,任何人都可以更改任何文本.

  • @Marcus:是的,原因.以http://www.ok-soft-gmbh.com/jqGrid/jsonfromsvc​​1.htm为例.但我知道原因**为什么**我们有不同的结果.全部取决于您发布数据的格式.如果你使用带有`repeatitems:false`的JSON XML格式,那么每一行数据都有属性,`rowObject`应该用名字索引.如果将紧凑数据作为字符串数组发布(对于标准jsonReader),则`rowObject是当前行的数组,您应该使用[int]来访问该属性. (2认同)
  • @Marcus:`$ tpcolModel`与你的情况中的`$("#grid-pos")[0] .p.colModel`或者可能是`mygrid [0] .p.colModel`相同.最好将其保存在局部变量中,以便在循环内更快地访问它.`var cm = myGrid.getGridParam("colModel");`是获取`mygrid [0] .p.colModel`的另一种方法 (2认同)