Estoy creando un jqgrid con columnas desplegables y estoy usando la edición de celda. Necesito las opciones de la lista desplegable columnas para cambiar dinámicamente y he intentado implementar esta estableciendo la columna para que sea:jqGrid opción de selección dinámica
{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select" },
y luego en caso beforeCellEdit tengo:
beforeEditCell: function(id, name, val, iRow, iCol) {
if(name=='AccountLookup') {
var listdata = GetLookupValues(id, name);
if (listdata == null) listdata = "1:1";
jQuery("#grid").setColProp(name, { editoptions: { value: listdata.toString()} })
}
},
GetLookupValues simplemente devuelve una cadena en el formato "1: Uno; 2: Dos", etc. Eso funciona bien; sin embargo, las opciones se completan un clic detrás; es decir, hago clic en ID de cuenta en la fila 1 y el menú desplegable está vacío. haga clic en AccountID en la fila 3, las opciones que configuro en la fila 1 clic se muestran en la fila 3 clic. Y así. Entonces, siempre con un clic detrás.
¿Hay alguna otra manera de lograr lo que necesito? Básicamente, las opciones desplegables que se muestran cambian constantemente y necesito cargarlas a medida que el usuario ingresa a la celda para editarlas. Quizás de alguna manera pueda obtener el control de selección en el evento beforeEditCell e ingresar manualmente sus valores en lugar de usar la llamada setColProp? Si es así, ¿podría obtener un ejemplo de hacer eso, por favor?
Otra cosa: si el menú desplegable está vacío y un usuario no cancela la edición de la celda, la secuencia de comandos de la cuadrícula arroja un error. Estoy usando la edición de clientarray si eso hace la diferencia.
Una cosa más: la opción getChangedCells en la columna de selección siempre devuelve el texto y no el valor/Id - ¿hay alguna forma de evitar esto? –