none
Problema con Eval() dentro de un GridView RRS feed

  • Pregunta

  • Buenas

    Tengo el siguiente problema en mi GridView con unas columnas con CheckBox.

    1- Guardo en un DataTable los datos de una consulta a la base de datos.

    2- Modifico los datos del DataTable según unas condiciones y realizo table.AcceptChanges();

    3- Dentro de la propiedad Checked del checkBox tengo la siguiente función Eval 

    Checked='<%# Eval("IsDisabled") == "Y" ? true : false %>' //IsDisabled es una columna que posee el dato "Y" o "N" 

    4- Cargo el GridView con mi DataTable.

    Al parecer todo bien, pero la función Eval solo funciona en algunas filas ya que en las que he editado no marca el CheckBox.

    el resultado es este, si en la columna IsDisabled esta como "Y" en la otra Columna IsDisabled el checkbox debe estar marcado: 


    y debería quedar así:

    

    pasa el mismo problema con la columna Hidden.

    Cualquier ayuda sirve, saludos!

    martes, 25 de septiembre de 2012 19:07

Respuestas

  • no has evaluado usar el evento RowDataBound ? en este evento podrias tomar el valor original que forma la fila

    GridViewRow.DataItem Property

    para recuperar el RowDataView y poder evaluar el valor de cada row que genera cada fila

    si a esto lo unes al FindControl() podrias aplicar toda la logica desde codigo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 25 de septiembre de 2012 19:53

Todas las respuestas

  • Pregunta:

    Los registros que no marca el checkbox, que valor tiene en IsDisabled ?

    Realiza una prueba con el visualizador de datasets, por que es probable que este nulo y por eso no los esta marcando, si ese es el caso, lo solucionarias con algo como:

    Eval("IsDisabled") == null ? true : Convert.ToBoolean(Eval("IsDisabled")) ? true : false


    Un saludo, Cristian Pérez


    martes, 25 de septiembre de 2012 19:17
  • Gracias por tu respuesta Cristian

    edite el mensaje principal para que quede mas claro (no debí borrar los header)

    Los datos de la columna IsDisabled los tengo cargados en una columna y según el valor que tenga, el checkbox de la otra columna cambia. (tengo el mismo problema con la columna Hidden).


    martes, 25 de septiembre de 2012 19:31
  • no has evaluado usar el evento RowDataBound ? en este evento podrias tomar el valor original que forma la fila

    GridViewRow.DataItem Property

    para recuperar el RowDataView y poder evaluar el valor de cada row que genera cada fila

    si a esto lo unes al FindControl() podrias aplicar toda la logica desde codigo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 25 de septiembre de 2012 19:53
  • Gracias Leandro utilice lo que me dices y funciono perfecto

    Muchas gracias!
    martes, 25 de septiembre de 2012 20:37