none
Como passar dados de um GridView para outra página? RRS feed

  • Pergunta

  • Boa tarde a todos,

    Queria pedir a ajuda de vocês para passar os dados de determinado linha de um GridView para outra página usando o CommandField, porém para o texto desse CommandField quero usar os ID que já estão no GridView, e nao criar outra coluna com um monte de links "editar". Isso é possível? Alguém pode me ajudar?

     

    Agradeço a todos desde já!

    terça-feira, 30 de novembro de 2010 19:23

Respostas

  • Oi,

    Veja se ajuda:

    http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/729a7ae7-5187-477d-ad90-e78bd7e47034


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
    • Marcado como Resposta Harley Araujo quinta-feira, 2 de dezembro de 2010 11:17
    quarta-feira, 1 de dezembro de 2010 11:35
  • Olá,

    Voce pode usar um CommandField, para criar um comando que permita selecionar um item do grid e utilizar por exemplo o campo chave da tabela para que seja passado como parâmetro:

    <asp:GridView runat="server" ID="gvList" DataKeyNames="ID" OnSelectedIndexChanging="gvList_SelectedIndexChanging">
       <Columns>
       <asp:CommandField SelectImageUrl="~/App_Img/ico/edit.png" SelectText="Editar registro"
        ShowSelectButton="True" ButtonType="Image">
       </asp:CommandField>
       </Columns>
    </asp:GridView>
    

    O mais importante neste caso é a propriedade DataKeyName do GridView, onde você irá especificar o nome do CAMPO CHAVE da sua tabela que está incluso no seu data set ou na lista que serve como datasource de seu grid, no meu exemplo imaginei que o campo CHAVE chamaria ID:

     DataKeyNames="ID"

    Além disto é importante setar a propriedade ShowSelectButton do CommandField para true para que você ao clicar em editar seja disparado o evento
    SelectedIndexChanging do Grid View, feito isto dentro do evento SelectedIndexChanging do grid você consegue recuperar o ID selecionado e você pode usar este ID para efetuar uma consulta ao banco de dados, ou para redirecionar para uma página de edição, passando o ID selecionado como parâmetro através de QueryString, como mostrado no exemplo abaixo:

    Protected Sub gvList_SelectedIndexChanging(ByVal sender As Object, ByVal e As GridViewSelectEventArgs)
     Dim id As String = gvList.DataKeys(e.NewSelectedIndex).Value.ToString
     Response.Redirect("~/NomeDaMinhaPagina.aspx?id=" + id)
     End Sub
    


    Na outra página (Para o qual você redirecionou), você pode capturar este valor no Load do formulário por exemplo e pode usar este ID para preencher o formulário de acordo com os dados do registro por exemplo:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      Dim id As Integer = Integer.Parse(Request.QueryString("id"))
     End Sub
    

     

    Atenciosamente


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    • Marcado como Resposta Harley Araujo quinta-feira, 2 de dezembro de 2010 11:17
    quarta-feira, 1 de dezembro de 2010 16:51

Todas as Respostas

  • Você tem um Grid e passar os dados da linha selecionada para outra pagina, para editar os registros? Normalmente você usaria o Id da linha selecionada passando por QueryString e recuperaria a informação do banco desta linha com o Id da Linha selecionada.

    Outra forma seria vc criar uma Session com DataTable e passar esta linha inteira em forma de DataTable na Session e recuperar a Session que teria a representacao da linha.

    Explique sua necessidade e poderemos te dar a melhor solução.

    Espero ter ajudado.


    Ederson Lima O maior problema do Desenvolvimento de Sistemas usando as atuais e poderosas Linguagens de Programação e Sistemas Gerenciadores de Bases de Dados é a facilidade de se fazer malfeito e a grande dificuldade de se fazer bem-feito.
    terça-feira, 30 de novembro de 2010 20:02
  • Quero passar por QueryString mesmo, bom acho que não expliquei bem, é o seguinte, tenho uma tabela e quero passar o id para outra página aspx, mas para fazer isso eu não quero criar outra coluna na tabela, quero usar a coluna dos ID's,

    então quando o usuário clicar no ID, ele é redirecionado para outra página para fazer a edição dos itens.

    terça-feira, 30 de novembro de 2010 20:22
  • Oi,

    Veja se ajuda:

    http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/729a7ae7-5187-477d-ad90-e78bd7e47034


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
    • Marcado como Resposta Harley Araujo quinta-feira, 2 de dezembro de 2010 11:17
    quarta-feira, 1 de dezembro de 2010 11:35
  • Olá,

    Voce pode usar um CommandField, para criar um comando que permita selecionar um item do grid e utilizar por exemplo o campo chave da tabela para que seja passado como parâmetro:

    <asp:GridView runat="server" ID="gvList" DataKeyNames="ID" OnSelectedIndexChanging="gvList_SelectedIndexChanging">
       <Columns>
       <asp:CommandField SelectImageUrl="~/App_Img/ico/edit.png" SelectText="Editar registro"
        ShowSelectButton="True" ButtonType="Image">
       </asp:CommandField>
       </Columns>
    </asp:GridView>
    

    O mais importante neste caso é a propriedade DataKeyName do GridView, onde você irá especificar o nome do CAMPO CHAVE da sua tabela que está incluso no seu data set ou na lista que serve como datasource de seu grid, no meu exemplo imaginei que o campo CHAVE chamaria ID:

     DataKeyNames="ID"

    Além disto é importante setar a propriedade ShowSelectButton do CommandField para true para que você ao clicar em editar seja disparado o evento
    SelectedIndexChanging do Grid View, feito isto dentro do evento SelectedIndexChanging do grid você consegue recuperar o ID selecionado e você pode usar este ID para efetuar uma consulta ao banco de dados, ou para redirecionar para uma página de edição, passando o ID selecionado como parâmetro através de QueryString, como mostrado no exemplo abaixo:

    Protected Sub gvList_SelectedIndexChanging(ByVal sender As Object, ByVal e As GridViewSelectEventArgs)
     Dim id As String = gvList.DataKeys(e.NewSelectedIndex).Value.ToString
     Response.Redirect("~/NomeDaMinhaPagina.aspx?id=" + id)
     End Sub
    


    Na outra página (Para o qual você redirecionou), você pode capturar este valor no Load do formulário por exemplo e pode usar este ID para preencher o formulário de acordo com os dados do registro por exemplo:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      Dim id As Integer = Integer.Parse(Request.QueryString("id"))
     End Sub
    

     

    Atenciosamente


    Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
    • Marcado como Resposta Harley Araujo quinta-feira, 2 de dezembro de 2010 11:17
    quarta-feira, 1 de dezembro de 2010 16:51