none
obtener el valor de un gridview por medio de un boton RRS feed

  • Pregunta

  • Hola, tengo una pregunta es que tengo el siguiente codigo:

       protected void btnSelComp_Click(object sender, ImageClickEventArgs e)
       {
                ImageButton btn = sender as ImageButton;
                GridViewRow row = (GridViewRow)btn.NamingContainer;
                String idViaje = this.grdCompen.DataKeys[row.RowIndex].Value.ToString();  <-- bien
                String fIni = row.Cells[0].Text;   <--error
                String fFin = row.Cells[1].Text;   <--error
       }

    son unos datos en un gridview, necesito obtenerlos después de que presione el botón, lo único que si obtengo es el Datakeys pero necesito también los otros campos y no he podido , no se como recorrer por que no me da el valor, les agradezco mucho si me ayudaran por favor, gracias

    jueves, 16 de abril de 2015 22:23

Respuestas

  • Ya pude, no hubo necesidad de utilizar el RowCommand  ni tampoco tener que meter mas llaves al DatakeysNames, seguí con el onclick del boton, así pude obtener los campos, de todas maneras muchas gracias Leandro Tuttini y Jose A. Fernandez

    protected void btnSelComp_Click(object sender, ImageClickEventArgs e)
            {
                ImageButton btn = sender as ImageButton;
                GridViewRow row = (GridViewRow)btn.NamingContainer;
                String idViaje = this.grdCompen.DataKeys[row.RowIndex].Value.ToString();
                String ini = this.grdCompen.Rows[row.RowIndex].Cells[2].Text;
                String fin = this.grdCompen.Rows[row.RowIndex].Cells[3].Text;
             }

    viernes, 17 de abril de 2015 14:19

Todas las respuestas

  • hola

    el boton esta dentro del gridview ? como una columna de template

    porque si es asi no se usa el click del boton, sino que se asigna el CommandName y se usa el RowCommand del gridview

    GridView.RowCommand (Evento)

    -----

    las otras columnas lsa defines del tipo BoundField o son de template, porque ojo que el Text no aplica a columnas template, alli se usa el FindControl()

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 16 de abril de 2015 22:55
  • Estimado Jorge5151

    Puedes recuperarlos con Datakeys y DatakeysNames... o con rowCommand como te comenta Leandro... 

    Para los primeros... mira si te sirven estos post anteriores

    Espero que te sirva de ayuda o guia


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    jueves, 16 de abril de 2015 23:57
  • Hola

    Si el botón esta dentro del gridview como una columna template  y las otras columnas son tipo BoundField 

    pero entonces el CommandName lo aplico al ImageButton ?

    <asp:TemplateField HeaderText="+" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
     <ItemTemplate>
             <asp:ImageButton ID="btnSelComp" runat="server" Height="24px" ImageUrl="~/iconosMetro/adicionar1.png"
              Width="25px" onclick="btnSelComp_Click" />
       </ItemTemplate>
    <HeaderStyle HorizontalAlign="Center" />
     <ItemStyle Width="20pt" HorizontalAlign="Center" />
    </asp:TemplateField>

    viernes, 17 de abril de 2015 13:03
  • Tambien lo hacia ya que tengo un BoundField oculto que es el id y lo tengo relacionando con el DataKeyNames="idViaje"

    <asp:BoundField DataField="idViaje" HeaderText="idViaje" Visible="false" />

    Si lo hago con el RowCommand  como puedo obtener esa columna q esta oculta?

    viernes, 17 de abril de 2015 13:12
  • Si el botón esta dentro del gridview como una columna template  y las otras columnas son tipo BoundField 

    pero entonces el CommandName lo aplico al ImageButton ?

    <asp:TemplateField HeaderText="+" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
     <ItemTemplate>
             <asp:ImageButton ID="btnSelComp" runat="server" Height="24px"ImageUrl="~/iconosMetro/adicionar1.png"
              Width="25px" onclick="btnSelComp_Click" />
       </ItemTemplate>
    <HeaderStyle HorizontalAlign="Center" />
     <ItemStyle Width="20pt" HorizontalAlign="Center" />
    </asp:TemplateField>

    Tambien lo hago ya que tengo un BoundField esta oculto que es el id y lo tengo relacionando con el DataKeyNames="idViaje"

    <asp:BoundField DataField="idViaje" HeaderText="idViaje" Visible="false" />

    Si lo hago con el RowCommand  como puedo obtener esa columna q esta oculta?

    viernes, 17 de abril de 2015 13:46
  • hola

    si el BoundField esta coulto no vas a poder acceder a los datos, la info oculta la debes definir en el DataKeyNames y tomarla con el DataKeys

    al ocltar una columnas esta no interviene en el render por lo tanto no podras acceder a la informacion

    >>Si lo hago con el RowCommand  como puedo obtener esa columna q esta oculta?

    no, tampoco puedes

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 17 de abril de 2015 14:03
  • Ya pude, no hubo necesidad de utilizar el RowCommand  ni tampoco tener que meter mas llaves al DatakeysNames, seguí con el onclick del boton, así pude obtener los campos, de todas maneras muchas gracias Leandro Tuttini y Jose A. Fernandez

    protected void btnSelComp_Click(object sender, ImageClickEventArgs e)
            {
                ImageButton btn = sender as ImageButton;
                GridViewRow row = (GridViewRow)btn.NamingContainer;
                String idViaje = this.grdCompen.DataKeys[row.RowIndex].Value.ToString();
                String ini = this.grdCompen.Rows[row.RowIndex].Cells[2].Text;
                String fin = this.grdCompen.Rows[row.RowIndex].Cells[3].Text;
             }

    viernes, 17 de abril de 2015 14:19