Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/08/2007, 03:55
Avatar de zacktagnan
zacktagnan
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 11 meses
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.
=================================================