2010-10-27 11 views
5

Tenemos una cuadrícula con tipo de datos json.Datos de fila de acceso en el formateador personalizado jqGrid

tenemos los siguientes formateador personalizado:

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

En lugar de rowObject[5] ¿hay alguna notación de objetos en el que podemos especificar el nombre real de la columna ("cuenta")? Ie: rowObject.account.

Ésta es la definición de la retícula:

$("#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' 
}); 

??

Respuesta

11

Me parece absolutamente correcto el comportamiento. El valor del parámetro rowObject es objeto que tiene propiedades con los mismos nombres definidos en la propiedad 'nombre' del colModel. La propiedad account es una desde allí. Supongo que el malentendido proviene de la siguiente parte de la documentación de la custom formatter:

rowObject - es una fila de datos representados en el formato determinado a partir de la opción de tipo de datos . ... Si tenemos tipo de datos: JSON/jsonString - la rowObject es gama, siempre de acuerdo con las reglas de JsonReader

Probablemente la palabra gama sigue a malos entendidos. En JavaScript rowObject.account se puede utilizar como rowObject["account"], pero no se puede usar rowObject[5] para acceder a la propiedad account de rowObject. No es una oración escrita clara en la documentación. Si eres un hablante nativo de inglés, puedes reformular el texto para que no tenga malentendidos. La documentación es wiki y cualquier persona puede cambiar cualquier texto.

+1

Lo que estaba tratando de decir es que 'rowObject [5]' SÍ funciona, pero 'rowObject [" account "]' and 'rowObject.account' NO funciona. Lo que me gustaría es poder usar esas dos últimas variantes ... –

+0

¿Es porque estamos usando 'loadOnce: true'? Tal vez esto cause un problema ya que esta configuración hace que el tipo de datos de la cuadrícula sea 'local'. La documentación menciona algo sobre la notación de objetos que solo está disponible para el tipo de datos JSON. –

+0

@Marcus: en mis ejemplos puedo usar notación como' rowObject. cuenta'. Debería publicar los datos JSON de prueba y más código 'jqGrid' completo que se puede usar para reproducir su problema. – Oleg

Cuestiones relacionadas