Tengo un básico de jqgrid aplicación.

$('.fsJqGrid').jqGrid({
    datatype: "local",
    height: 175,
    colNames: ['FeatureId', 'Name', ''],
    colModel: [
        { name: 'FeatureId', index: 'FeatureId', width: 75, align: 'left',
          sorttype: "int", hidden: true, key: true },
        { name: 'Name', index: 'Name', width: 180 },
        { name: 'tools', index: 'tools', width: 150}
    ]
});

function FeatGridAddRow(jqTableName, feature) {
    ///<summary>Adds a row of data to a Feature JQGrid</summary>
    var RowId = $("#" + jqTableName).jqGrid('getGridParam', 'reccount');

    feature.tools = 'MyToolHtml';

    $("#" + jqTableName).jqGrid('addRowData', RowId, feature); //jqgrid
} //function

function FeatGridUpdateRow(featureId, newName) {
    ///<summary>Updates JQGrid data row</summary>

    //I need to find the rowId, based on the featureId parameter
    var rowId = 0;      

    //update grid with new data
    $("#tabFS0").jqGrid('setRowData' , rowId , {Name: newName});
} //function

Quiero ser capaz de actualizar una fila de datos, pero necesito saber el rowId para hacerlo.

El único dato que tengo es el valor de la clave (featureId).

Así que estoy buscando una manera de encontrar el rowId basado en el valor de clave principal que yo sé.

He estado buscando en el jqgrid documentación, y yo no estoy viendo de una manera obvia de hacerlo.


ACTUALIZACIÓN: La respuesta es utilizar mi mesa PK como el rowId.

Así, en el complemento de la función;

var RowId = $("#" + jqTableName).jqGrid('getGridParam', 'reccount');
$("#" + jqTableName).jqGrid('addRowData', RowId, feature);

se convierte en

$("#" + jqTableName).jqGrid('addRowData', feature.FeatureId, feature);
InformationsquelleAutor GordonB | 2010-12-10

1 Comentario

  1. 3

    Porque define FeatureId con el key:true, el id de cada fila será el mismo que el valor de la FeatureId columna. Si not need it you should removeclave:true` configuración.

    No pones el código completo del ejemplo que usted use, así que supongo que usted tiene un problema en el lugar del código donde rellenar los datos en el jqGrid. Yo no understend el escenario que usted tiene. Desde donde se reciben los datos que desea rellenar la cuadrícula? ¿Usted recibe sólo una fila a la vez? Se obtiene la fecha del servidor, desde el origen de datos local o de la entrada de usuario? La manera más efectiva para llenar la fila es el uso de data parámetro de la jqGrid (ver esta respuesta). Por otra parte jqGrid ha ricas posibilidades para rellenar la cuadrícula por petición ajax.

    A ser capaz de responder a su pregunta principal sobre la modificación de los datos debe describir el contexto. ¿Necesita que el usuario puede modificar los datos? A continuación, puede utilizar la edición en línea, formulario de edición o edición de celdas (ver documentación y «Fila de Edición»/»tipo de Entrada» y «Vivir de Manipulación de Datos»/»Navigator», seleccione la fila y haga clic en el botón editar en el navegador de la el oficial de jqGrid demo). Si desea modificar la fila que son modificadas por el usuario, se pueden usar funciones como setRowData.

    Así que si usted explicar más de lo que la aplicación hace y cómo se utiliza jqGrid podría escribir más referencias.

    • Voy a agregar los datos de una línea en un tiempo usando el FeatGridAddRow función. He creado la FeatGridUpdateRow función para ilustrar lo que yo estoy tratando de hacer. No quiero utilizar la edición en línea. Estoy usando mi propio emergente mecanismo para permitir al usuario hacer sus propios cambios, solo necesito una manera de localizar la fila correcta con el fin de hacer sus cambios visibles.
    • No entiendo cómo usted desea integrar su «propio mecanismo emergente» en jqGrid, por lo que es difícil dar avisos. Probablemente $("#list").jqGrid('getGridParam', 'selrow') – el id de la fila seleccionada actualmente podría ser lo que usted necesita. Si usted prefiere identificar las filas por featureId por qué no agregar filas mediante el featureId como rowid? ¿Por qué utilizar el valor de la ‘reccount’ en su lugar?
    • Por el camino, usted puede quitar align:'left' y multiselect: false porque es la configuración predeterminada. Usted también debe eliminar la coma antes de «});» al final de la jqGrid definición.
    • Estoy usando mi propio mechansim para la edición de como es la interfaz quiero que mis usuarios a utilizar, yo simplemente no quiero ser forzados a usar el jqgrid interfaz de edición. Esto no debería ser un problema.
    • «¿por qué no agregar las filas utilizando el featureId como rowid» probablemente me ayuda a salir la mayoría de aquí. callejero de la coma son sólo una consecuencia de la piratería de mi ejemplo de trabajo para ASÍ.

Dejar respuesta

Please enter your comment!
Please enter your name here