2011-01-10 28 views
9
jQuery("#CustomerDetailsGrid").jqGrid({ 
    //ignore other properties 
    colModel: [ 
    { name: 'AccountNumber', index: 'AccountNumber', hidden: true, viewable: true } 
], 
    viewrecords: true   
}); 

necesito ocultar la columna "Número de cuenta" en la vista de cuadrícula pero muestran en la vista formulario. (no edita forma)jqGrid muestran columna oculta en la vista formulario

+0

Hay una manera más fácil que aparece en otra pregunta en StackOverflow: [aquí] (http://stackoverflow.com/questions/1661800/hidden-columns-in -jqgrid) –

Respuesta

11

Si el diálogo Ver hará ser creado, se completará con la información sobre cada columna colocada en las filas. La identificación de la fila (la identificación del elemento <tr>) se construirá a partir del prefijo "trv_" y el nombre de la columna correspondiente. Es importante comprender que en la forma en que se completará la información sobre todas columnas inclusive columnas ocultas, pero los elementos <tr> para las columnas ocultas estarán ocultos (tiene style = "display: none;"). Entonces, para hacer que la información sea visible, basta con llamar a la función jQuery.show() para el elemento correspondiente <tr>.

Preparé the small demo que demuestran esto. En la columna de la demostración id están ocultas, pero hago la información visible en el interior de beforeShowForm y afterclickPgButtons controlador de eventos de las opciones de Vista:

$("#list").jqGrid('navGrid','#pager', 
        {add:false,edit:false,del:false,view:true,search:false}, 
        {}, // edit options 
        {}, // add options 
        {}, // del options 
        {}, // search options 
        { // vew options 
         beforeShowForm: function(form) { 
          $("tr#trv_id",form[0]).show(); 
         }, 
         afterclickPgButtons: function(whichbutton, form, rowid) { 
          $("tr#trv_id",form[0]).show(); 
         } 
        }); 
+0

ya que la pregunta tiene 2 años, me preguntaba: ¿hay alguna solución actualizada para esto? NB: JqSuite para PHP - –

+2

@JessStone: Yo no uso jqSuite, pero supongo que todo es lo mismo que en jqGrid. On puede usar 'editrules: {edithidden: true}', pero no es una opción pura para View. Se usará también para editar. Si no usa la edición y solo quiere mostrar algunas columnas ocultas, puede usar 'editrules: {edithidden: true}'. – Oleg

+0

Estimado @Oleg, descubrí que solo tengo que usar "editable" => falso, ya que mi objetivo es mostrar la columna en la tabla y ocultarla en el formulario de edición. gracias de todos modos, eres un JqGrid GURU, ¡estoy votando todas tus respuestas! ! :) –

3

Para el seguimiento sugerencia J_ 's, aplicando la siguiente hace el truco :

editoptions: { dataInit: function(element) { $(element).attr("readonly", "readonly"); } } 

Escenario # 1:

  • campo debe ser visible en la cuadrícula
  • campo debe ser visible en forma
  • campo debe ser

Solución de sólo lectura:

colModel:[ 
    {name:'providerUserId',index:'providerUserId', width:100,editable:true, editrules:{required:true}, editoptions:{ dataInit: function(element) { jq(element).attr("readonly", "readonly"); } }}, 
], 

El providerUserId es visible en la cuadrícula y visible al editar el formulario. Pero no puedes editar los contenidos.


Escenario # 2:

  • campo no debe ser visible en la cuadrícula
  • campo debe ser visible en forma
  • campo debe ser
de sólo lectura

Solución:

colModel:[ 
    {name:'providerUserId',index:'providerUserId', width:100,editable:true, editrules:{required:true, edithidden:true}, hidden:true, editoptions:{ dataInit: function(element) { jq(element).attr("readonly", "readonly"); } }}, 
] 

Aviso en ambas instancias Estoy usando jq para hacer referencia a jquery, en lugar de los usuales $. En mi HTML Tengo la siguiente secuencia de comandos para modificar la variable utilizada por jQuery:

<script type="text/javascript"> 
    var jq = jQuery.noConflict(); 
</script> 
13

La mejor manera única es la adición de las editrules: {edithidden: true} opción.

colModel: [{ name: 'AccountNumber', index: 'AccountNumber', hidden: true, viewable: true,editrules:{edithidden:true} }] 
+0

gracias! me salvaste el tiempo – DeveloperX

1

Para ocultar la columna de cuadrícula

jQuery("#GridId").jqGrid('hideCol','colName'); 
Cuestiones relacionadas