Доступ к данным строки в пользовательском форматере jqGrid - PullRequest
5 голосов
/ 27 октября 2010

У нас есть сетка с типом данных json.

У нас есть следующий пользовательский форматер:

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

Вместо rowObject[5] есть ли обозначение объекта, в котором мы можем указать фактическое имя столбца ("account")? Т.е.: 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'
});  

??

Ответы [ 2 ]

11 голосов
/ 28 октября 2010

Мне кажется, абсолютно правильное поведение. Значением параметра rowObject является объект , имеющий свойства с такими же именами, как определено в свойстве 'name' colModel. Свойство account является одним оттуда. Я полагаю, что недоразумение проистекает из следующей части документации пользовательского форматера :

rowObject - представляет данные строки в формате, определенном из типа данных вариант. ... Если у нас есть тип данных: json / jsonstring - rowObject является массив, предоставляемый по правилам от jsonReader

Вероятно, слово массив следует за недоразумением. В JavaScript rowObject.account может использоваться как rowObject["account"], но нельзя использовать rowObject[5] для доступа к свойству account rowObject. Это просто непонятное письменное предложение в документации. Если вы являетесь носителем английского языка, вы можете переформулировать текст, чтобы в нем не было недопонимания. Документация вики и любой человек может изменить любой текст.

0 голосов
/ 05 января 2019

Вы можете получить этот код для второго индекса

rowObject.childNodes[2].textContent
...