TransWikia.com

Acceso a RowCommand aspx

Stack Overflow en español Asked by Ledferoz10 on August 26, 2021

Tengo una tabla de uno a uno de radicaciones a documentos adjuntos, cuando creo un radicado, debo adjuntarle un archivo.

Tengo estos controles:

<asp:TemplateField HeaderText="Archivo" HeaderStyle-CssClass="text-center">
    <ItemTemplate>
        <asp:FileUpload ID="fu1" runat="server" />
        <asp:Button ID="btnguardar" runat="server" Text="Adjuntar" CommandName="up" />
    </ItemTemplate>
</asp:TemplateField>

Funcionalidad del botón:

protected void gvradica_RowCommand(object sender, GridViewCommandEventArgs e)
{
    Button btnUp = e.CommandSource as Button;
    if (e.CommandName.ToLower() != "up")
    {
        return;
    }

    FileUpload fu = btnUp.FindControl("fu1") as FileUpload;
    if (fu.HasFile)
    {
        DOCADJUNTO da = new DOCADJUNTO();
        if (fu.HasFile)
        {
            da.ID_RADICACION_FK = 1; // El numero 1 es un dato quemado
            da.NOMBRE = System.IO.Path.GetFileNameWithoutExtension(fu.PostedFile.FileName);
            da.EXTENSION = System.IO.Path.GetExtension(fu.PostedFile.FileName);
            da.ARCHIVO = fu.FileBytes;
            adoDocAdj.agregarAdjunto(da);
        }
    }
}

Lo que se quiere es que el ID_RADICACIÓN_FK lo traiga de manera automática, de la fila de la grilla seleccionada, pero no he podido hacerlo, lo he intentado hacerlo de las siguientes formas.

int index = Convert.ToInt32(e.CommandArgument);
da.ID_RADICACION_FK = Convert.ToInt32(gvradica.DataKeys[index].Value);

GridViewRow row = gvradica.SelectedRow;
da.ID_RADICACION_FK = Convert.ToInt32(gvradica.DataKeys[row.RowIndex].Value);

GridViewRow row = gvradica.SelectedRow;
da.ID_RADICACION_FK=Convert.ToInt32(gvradica.DataKeys[row.RowIndex].Values["ID_RADICACION"]);

var query = from ra in contexto.RADICACIONES select new { ra.ID_RADICACION };

da.ID_RADICACION_FK = int.Parse(gvradica.SelectedDataKey.Values[0].ToString() + "" + gvradica.SelectedDataKey.Values[1].ToString());

da.ID_RADICACION_FK = Convert.ToInt32(e.CommandArgument);

Ninguna sirve.

One Answer

Para poder utilizar e.CommandArgument, primero debes asignarle un valor único a cada botón, en este caso el id de la fila:

<asp:Button ID="btnguardar" runat="server" Text="Adjuntar" CommandName="up" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"/>

Luego ya puedes capturarlo en el evento RowCommand:

da.ID_RADICACION_FK = Convert.ToInt32(e.CommandArgument);

Answered by JYass on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP