plugin bootstrap jquery dynamic jquery-plugins jqgrid

bootstrap - masonry plugin jquery



Opción de selección dinámica jqGrid (1)

Estoy creando un jqgrid con columnas desplegables y estoy usando la edición de celda. Necesito que las opciones de las columnas desplegables cambien dinámicamente y he intentado implementar esto configurando la columna para que sea:

{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select" },

y luego en el evento 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 con 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 AccountID 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 forma 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. Tal vez 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.


Podría usar la opción dataInit, así:

{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select", editoptions: { dataInit: function( elem ) { $(elem).empty() .append("<option value=''1''>Apples</option>") .append("<option value=''2''>Oranges</option>"); } } }

Simplemente reemplace las opciones estáticas de Manzanas y Naranjas con su función GetLookupValues ​​().