none
Pegar valor no GridView RRS feed

  • Pergunta

  • Pessoal,

    Tem um GridView com algumas colunas e a primeira delas esta setada Visible = false e adicionei na propriedade DataKeyName o campo da tabela.
    Coloquei neste GridView um templateField e dentro dele um botao.

    No click deste botao preciso recuperar o valor da coluna que esta invisivel.

    Alguem pode me ajudar?

    Obrigado

    sexta-feira, 7 de maio de 2010 15:21

Respostas

  • Amigo se vc informou o DataKeyName pode recuperar o valor desta forma:

     

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" DataKeyNames="SEU_CAMPO">

     

      protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
      {
        WebControl wc = ((WebControl)e.CommandSource);
        GridViewRow row = ((GridViewRow)wc.NamingContainer);
    
        Label1.Text = this.GridView1.DataKeys[row.RowIndex].Values["SEU_CAMPO"].ToString();
    
      }


    msn: poseidonfba@hotmail.com
    sexta-feira, 7 de maio de 2010 17:14

Todas as Respostas

  • GridView.SelectedDatakey[posicao].toString(); não funciona?

    Fkaeh - Gambi.NET® Framework Certificated 2010
    sexta-feira, 7 de maio de 2010 15:40
  • Fkaeh

    Nao funcionou.

    sexta-feira, 7 de maio de 2010 16:04
  • Você vai ter que fazer assim:

    Nesse botão que você vai clicar, passe a propriedade CommandName dele "Seleciona" por exemplo.

    Então, no evento RowCommand da Grid, você resgata a linha seleciona com e.Row.Index

    Fkaeh - Gambi.NET® Framework Certificated 2010
    sexta-feira, 7 de maio de 2010 16:07
  • Fkaeh,

    e.Row.Index nao é aceito dentro do RowCommand

    sexta-feira, 7 de maio de 2010 16:31
  • Opa, foi mal

    Dim index As Integer = e.CommandArgument
    Dim id As Integer = grid.DataKeys(index)("id")


    Fkaeh - Gambi.NET® Framework Certificated 2010
    sexta-feira, 7 de maio de 2010 16:37
  • Fkaeh,

    Tambem nao aceita isso:

    int

     

    index = e.CommandArgument;

    sexta-feira, 7 de maio de 2010 16:59
  • tem que ser dentro do RowCommand, amigo.

    Alias, esqueci também..

    Vai no eventoRowCreate

    Dim Bt As Button = e.Row.FindControl("seubotaoid")
    If (IsNothing(Bt) = False) Then
      Bt.CommandArgument = e.Row.RowIndex
    End IF


    Fkaeh - Gambi.NET® Framework Certificated 2010
    sexta-feira, 7 de maio de 2010 17:05
  • Já passei por esse problema, quando vc seta a coluna como false o gridview não carrega o dado dessa coluna (nada a ver né). A solução foi setar a visibilidade da coluna no evento RowCreated ao invés da propriedade visible da coluna. Ficaria assim:

     

     

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
     e.Row.Cells[1].Visible = false;
     e.Row.Cells[2].Visible = false;
    }

     

    Ref.: http://stackoverflow.com/questions/416861/asp-net-gridview-value-set-to-null-when-column-is-not-visible

    Espero ter ajudado.

    sexta-feira, 7 de maio de 2010 17:06
  • Fkaeh,

    Mas ja esta dentro:

     protected void gvGroup_RowCommand(object sender, GridViewCommandEventArgs e)
        {
          if (e.CommandName == "Select")
          {
            int index = e.CommandArgument;
    sexta-feira, 7 de maio de 2010 17:12
  • Amigo se vc informou o DataKeyName pode recuperar o valor desta forma:

     

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" DataKeyNames="SEU_CAMPO">

     

      protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
      {
        WebControl wc = ((WebControl)e.CommandSource);
        GridViewRow row = ((GridViewRow)wc.NamingContainer);
    
        Label1.Text = this.GridView1.DataKeys[row.RowIndex].Values["SEU_CAMPO"].ToString();
    
      }


    msn: poseidonfba@hotmail.com
    sexta-feira, 7 de maio de 2010 17:14
  • Alias, esqueci também..

    Vai no eventoRowCreate

    Dim
     Bt As
     Button = e.Row.FindControl("seubotaoid"
    )
    If (IsNothing(Bt) = False ) Then
    Bt.CommandArgument = e.Row.RowIndex
    End IF

    Fkaeh - Gambi.NET® Framework Certificated 2010
    sexta-feira, 7 de maio de 2010 17:14
  • Pessoal,

    Realmente nao consegui fazer usando o botao que estava dentro do tamplatefield .. tive que trocar por um button field .. ai funcionou.

    Obrigado a todos.

    sexta-feira, 7 de maio de 2010 17:29