none
Evento que se desencadena cuando se oculta una columna de un GridView (DevExpress) RRS feed

  • Pregunta

  • Buenas noches disculpen la ignorancia, me gustaría obtener el índice de la columna que se oculto (haciendo Click derecho sobre la columna del GridView y presionando "Quitar esta columna")



    Renzo Rivera

    lunes, 7 de septiembre de 2020 1:43

Respuestas

  • Hola Renzo19,

    Disculpa si la respuesta no es a lo que te referías, pero no estoy familiarizado con DevExpress. Por lo que alcancé a leer en su documentación, independientemente de la forma en la que ocultes la columna, ya sea por código cambiando la visibilidad de la columna usando su propiedad GridColumn.Visible = false, seleccionando remover esta columna como en tu caso,  o de cualquier otra forma, lo que termina pasando a lo interno es siempre lo mismo: se cambia el valor de la propiedad VisibleIndex a -1 en todos los casos, este valor significa que la columna no es visible. Por lo tanto, se me ocurre que podrías tener un evento que esté pendiente de si la propiedad VisibleIndex en cualquier columna toma el valor -1, ya que esto significa que la columna se ocultó. Este fragmento de código sirve para obtener el índice de cualquier columna, visible o no visible, entonces puedes ponerlo dentro del evento para obtener el índice de la columna que se acaba de detectar que fue ocultada:

    var column = Columns.FirstOrDefault(c => c.FieldName.Trim().ToUpper() == fldName.Trim().ToUpper()); 
    
    MessageBox.Show(column == null ? "Not found" : Columns.IndexOf(column).ToString()); 

    Espero que te sea de ayuda.  Por favor no olvides marcar una respuesta si resolviste tu consulta. Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    lunes, 7 de septiembre de 2020 13:14
    Moderador
  • Hola, aviso que logre resolver lo que quería controlando el evento ColumnPositionChanged. El código es el siguiente:

     private void GridView1_ColumnPositionChanged(object sender, EventArgs e)
            {
                GridColumn column = sender as GridColumn;
                MessageBox.Show((column.Visible == true) ? "La " + column.FieldName + " esta visible)" : "La " + column.FieldName + " se ocultó");
    
            }

    Gracias por la ayuda Gabriel Castro R


    Renzo Rivera

    • Marcado como respuesta Renzo19 martes, 8 de septiembre de 2020 22:17
    martes, 8 de septiembre de 2020 22:17

Todas las respuestas

  • Hola Renzo19,

    Disculpa si la respuesta no es a lo que te referías, pero no estoy familiarizado con DevExpress. Por lo que alcancé a leer en su documentación, independientemente de la forma en la que ocultes la columna, ya sea por código cambiando la visibilidad de la columna usando su propiedad GridColumn.Visible = false, seleccionando remover esta columna como en tu caso,  o de cualquier otra forma, lo que termina pasando a lo interno es siempre lo mismo: se cambia el valor de la propiedad VisibleIndex a -1 en todos los casos, este valor significa que la columna no es visible. Por lo tanto, se me ocurre que podrías tener un evento que esté pendiente de si la propiedad VisibleIndex en cualquier columna toma el valor -1, ya que esto significa que la columna se ocultó. Este fragmento de código sirve para obtener el índice de cualquier columna, visible o no visible, entonces puedes ponerlo dentro del evento para obtener el índice de la columna que se acaba de detectar que fue ocultada:

    var column = Columns.FirstOrDefault(c => c.FieldName.Trim().ToUpper() == fldName.Trim().ToUpper()); 
    
    MessageBox.Show(column == null ? "Not found" : Columns.IndexOf(column).ToString()); 

    Espero que te sea de ayuda.  Por favor no olvides marcar una respuesta si resolviste tu consulta. Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    lunes, 7 de septiembre de 2020 13:14
    Moderador
  • Hola Gabriel Castro R,

    el problema es que no se en que evento va el codigo, es decir. En los DataGridViews de Windows.Forms existe el evento ColumnStateChanged algo parecido entiendo que es lo que necesito. Pero no se que evento es en GridView de DevExpress. Aprecio que te hayas tomado el tiempo de revisar la documentación. 


    Renzo Rivera

    martes, 8 de septiembre de 2020 21:56
  • Hola, aviso que logre resolver lo que quería controlando el evento ColumnPositionChanged. El código es el siguiente:

     private void GridView1_ColumnPositionChanged(object sender, EventArgs e)
            {
                GridColumn column = sender as GridColumn;
                MessageBox.Show((column.Visible == true) ? "La " + column.FieldName + " esta visible)" : "La " + column.FieldName + " se ocultó");
    
            }

    Gracias por la ayuda Gabriel Castro R


    Renzo Rivera

    • Marcado como respuesta Renzo19 martes, 8 de septiembre de 2020 22:17
    martes, 8 de septiembre de 2020 22:17