Manolo Herrera's profileManolo´s blogPhotosBlogLists Tools Help

Blog


    July 20

    Curiosidades del DataGrid y TextBox de VS2003 ASP.NET

    Un compañero tiene escondido en su grid una columna y en el modo de edicion tiene un textbox el cual hace un
    bind con una columna de una coleccion de datos con  el metodo DataBinder.Eval.  Y cuando necesita el valor de la propiedad Text no trae nada.  Si vuelve visble esta columna (cosa que no quiere hacer) si trae el valor en la propiedad Text del control TextBox. Pero si  cambia el control a un label (que es mas adecuado ya que nunca modifica el valor solo le sirve para pasarlo como parametro a un metodo de una clase)  Si tiene la columna del DataGrid invisible o Visible = false, de todos modos si trae el valor del label.  
     
    Sugerencia utilicen la clase label en columnas escondidas en el DataGrid de VS2003.  La lamentable noticia en 2005 que por razones de seguridad en el GridView es que una columna visible = false no hace el render del control es decir de ninguna manera podremos obtener los valores escondidos. 
     
    Soluciones alternas pueden plantearse pero de la manera sencilla y util del 2003 ya no se podra.  Como no nos preguntaron a los desarrolladores antes de hacer ese cambio o como no nos dijeraon la opcion para habilitarla aunque su recomendacion fuera que no la utilizaramos.
     
    Nos vemos hasta la proxima....
     
     

    Comments (2)

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Nunca habia visto este blog de Manolo, pero ahora que lo veo te mando un saludo, feliz navidad (aunque tarde) y feliz año nuevo (ahi si en tiempo).
     
    Ahora ya se la respuesta a este dilema del DataGrid -> GridView.
     
    Normalmente en nuestro conjunto de datos podemos tener algún número único, que nos sirve solo internamente, y que no se lo vamos a hacer visible al usuario final, en el DataGrid, podiamos usar una columna oculta, si no queriamos que el usuario la pudiera editar, se eliminaba el control del template para edición. En GridView si se oculta la columna, el viewstate no persistira el texto de la columna, y no lo podremos recuperar en el postback.
     
    La solución del GridView es usar la propiedad DataKeyNames, ahi colocamos los nombres de las columnas que son nuestras llaves de los datos (es un array de string), cuando queremos recuperar las llaves de la columna tenemos dos opciones:

    GridView.SelectedDataKey, que nos devuelve la primera llave de la fila seleccionada (forma rapida, cuando solo tenemos una llave)
    GridView.DataKeys[rowIndex][keyIndex] para obtener los valores de la fila (del gridview) y la llave (segun orden de DataKeyNames).
     
    Ambos métodos devuelven los valores como tipo object, para hacer el cast a nuestra necesidad.
     
    Definitivamente es más sencillo y estandar hacerlo de esta manera, que en .NET 1.x con el gridView y estar recuperando el objeto a pie.
     
    Espero esto les sirva =0)
    Dec. 31
    Hola Manolo!! Acabo de leer tu post acerca de que es imposible "ocultar" una columna en el gridview de VS2005, justamente eso estaba tratando de hacer, sacame de una duda de donde sabes q eso no es posible en el gridview?? Si esto es cierto, q soluciones me recomiendas para ocultar lo q no quiero mostrar?
    Saludos,
    Jose
    Sept. 26

    Trackbacks

    The trackback URL for this entry is:
    http://manoloblog.spaces.live.com/blog/cns!39F69F0893E9B439!114.trak
    Weblogs that reference this entry
    • None