Foros del Web » Programación para mayores de 30 ;) » .NET »

Trabajando con el DataKeyNames

Estas en el tema de Trabajando con el DataKeyNames en el foro de .NET en Foros del Web. Hola a tod@s: ** ASP.NET 2.0 - en C# ** Tengo un GridView (llamado GV_avisosCCRep) para listar registros de avisos telefónicos, mostrando ciertos campos de ...
  #1 (permalink)  
Antiguo 24/08/2007, 03:55
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Trabajando con el DataKeyNames

Hola a tod@s:

** ASP.NET 2.0 - en C# **

Tengo un GridView (llamado GV_avisosCCRep) para listar registros de avisos telefónicos, mostrando ciertos campos de la tabla AVISOS de la base de datos en cuestión.
En la etiqueta de <asp:GridView></asp:GridView> va incluída la propiedad DataKeyNames así:
Código:
... DataKeyNames="avis_clieid" ...
... campo que no es la clave principal de la tabla mencionada.

Decir que la columna referida al campo "avis_clieid" está con la propiedad Visible a false

Por último, como primera columna del GridView, hay un TemplateField, con un ImageButton que al clicarlo se redireccionará al detalle del registro elegido.
Para ello, dicho ImageButton lleva esto:
Código:
<asp:ImageButton ID="btn_Modif_Regis" runat="server" CausesValidation="False" CommandName="a_VerAviso"
                                    ImageUrl="~/images/ico_ver.png" AlternateText="Ver Aviso" CommandArgument='<%# Eval("avis_id") %>' />
El "avis_id" si es la clave principal de la tabla AVISOS

Y en el código interno .aspx.cs:
Código:

    protected void GV_avisosCCRep_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string _avis_id;

        if (e.CommandName == "a_VerAviso")
        {
            _avis_id = e.CommandArgument.ToString();
            Response.Redirect("~/operativa/callcenter_detalle.aspx?avis_id=" + _avis_id);
        }
    }
Entonces lo que me gustaría es, cuando voy a abrir la página de detalle pasar no solamente el [avis_id] del registro elegido sino también su [avis_clieid].

¿Es posible de alguna manera?, ¿cómo?

He probado varias formas como
Código:
    protected void GV_avisosCCRep_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        ...
        string _avis_clieid = "";
        //FORMA 1ª
        _avis_clieid = GridView_usuarios.SelectedDataKey.Value.ToString();
        //FORMA 2ª
        _avis_clieid = GV_avisosCCRep.SelectedDataKey.Values[0].ToString();
        //FORMA 3ª
        int indiceSelecc = GV_avisosCCRep.SelectedIndex;
        _avis_clieid = GV_avisosCCRep.DataKeys[indiceSelecc].Value.ToString();
        ...
        Response.Redirect("~/operativa/callcenter_detalle.aspx?avis_id=" + _avis_id + "&avis_clieid=" + _avis_clieid);
    }
... pero no me funcionan ó me dan el mensaje de error
Código:
Referencia a objeto no establecida como instancia de un objeto.
Pues eso, si alguien sabe cómo hacer lo deseado ó ve el error que estoy cometiendo, le agradecería me lo comunicara...
__________________
Saludos,

zacktagnan.
=================================================
  #2 (permalink)  
Antiguo 26/08/2007, 11:56
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 1 mes
Puntos: 3
Re: Trabajando con el DataKeyNames

¿Ninguna idea...?
__________________
Saludos,

zacktagnan.
=================================================
  #3 (permalink)  
Antiguo 24/02/2012, 03:54
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Trabajando con el DataKeyNames

Puedes hacerlo concatenado con una caracter significativo como puede ser '|' otro atributo en el CommandArgument de tu image button. Asi cuando vayas a obtenerlo en

_avis_id = e.CommandArgument.ToString();

lo unico que tienes que hacer es un split sobre el simbolo '|' y listo; tendras las dos valores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:09.