sworlls 0 Denunciar post Postado Setembro 13, 2010 Amigos, Ja estou quebrando a cabeça a algum tempo. Sou iniciante ainda em ASP.net porem ja consegui progredir bastante em meu projetinho. Bem, estou encalhado a alguns dias onde fiz um Bind no gridview mas preciso agora paginar ele, e os códigos que encontro no google não estou conseguindo adaptar em meu projeto. Estou utilizando a linguagem VB ao invez de C#, se algume poder me ajudar nisso, ficarei muito agradecido. Bem, so para deixar mais claro como esta o meu projeto vou tentar demonstrar abaixo. Criei uma classe para conexão onde ao chamar a conexão passo a string de conexao assim como a instrução SQL e ele me retorna o datareader que eu carrego dentro de um dataset. Em seguida faço o bind desse dataset no gridview o que me exibe tudo bonitinho, mas nao consigo paginar, e nem muito menos ordenar os items. Dim VarTable as new datatable Dim VarConn as new connection("Minha classe para conexão") VarTable.Load(VarConn.Open("String de conexão", "Instrução SQL")) GridView.DataSource = VarTable GridView.DataBind() Por favor, me ajudem porque ja to ficando louco com isso. Abraços a todos e otimo dia. Compartilhar este post Link para o post Compartilhar em outros sites
daniel.cafonso 0 Denunciar post Postado Setembro 13, 2010 Olá sworlls, Isso você já tem pronto no próprio GridView. ;) Selecione o GridView e, na janela de propriedades, defina : AllowSorting = True e AllowPaging = True E dá uma lida nesse artigo aqui Abraços, Daniel Afonso Compartilhar este post Link para o post Compartilhar em outros sites
sworlls 0 Denunciar post Postado Setembro 13, 2010 Boa noite Daniel, Esse processo aí eu ja conheço, o problema que encontro é quando tenho que fazer "bind" no gridview, então se bem entendo, quando se faz "bind" tem que tratar tanto o "organizar" quanto "paginar" do gridview. E não estou conseguindo nenhum dos dois. Alguma ideia? Abraços amigão. Olá sworlls, Isso você já tem pronto no próprio GridView. ;) Selecione o GridView e, na janela de propriedades, defina : AllowSorting = True e AllowPaging = True E dá uma lida nesse artigo aqui Abraços, Daniel Afonso Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 14, 2010 Só chamar o método DataBind novamente não irá funcionar, você deve chamar o método que alimenta sua grid novamente. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
sworlls 0 Denunciar post Postado Setembro 15, 2010 Olá Quintelab, consegui paginar corretamente agora, fazendo o que me disse, chamando o método que alimenta o gridview, porem agora cai em outra situação. Após mudar de pagina do gridview da 0 para a 1 por exemplo, e clicar em selecionar algum item para tentar ler, ele me retorna o seguinte erro: "O índice estava fora do intervalo. Ele deve ser não-negativo e menor que o tamanho da coleção. Nome do parâmetro: index" Imagino que eu tenha que informar o index da paginação no momento de coletar a info, mas não estou conseguindo encontrar a propriedade para isso, pode me dar uma força nisso tambem? Abraços amigo e obrigado pela luz que me deu no item anterior. Só chamar o método DataBind novamente não irá funcionar, você deve chamar o método que alimenta sua grid novamente. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 17, 2010 Poste o código do seu evento. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
sworlls 0 Denunciar post Postado Setembro 17, 2010 Amigo, veja o meu código. ------------------------------------------------------------------------------------------------- Protected Sub GDview_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles GDView.SelectedIndexChanged Dim VarTable As New DataTable Dim VarConn as new Connection_class.connection Dim VarCodeBase As String Try VarCodeBase = GDView.SelectedRow.Cells.Item(0).Text VarTable.Load(VarConn.Open("String de conexão com o banco", "Instrução SQL")) If VarTable.Rows.Count <> 0 Then txtCode.Text = VarTable.Rows(0).Item(0).ToString txtDescription.Text = VarTable.Rows(0).Item(4).ToString txtName.Text = VarTable.Rows(0).Item(1).ToString txtSigla.Text = VarTable.Rows(0).Item(3).ToString lstEstate.SelectedValue = VarTable.Rows(0).Item(2) End If VarTable.EndLoadData() VarTable.Dispose() Catch LBLstatus.Text = ErrorToString() End Try End sub-------------------------------------------------------------------------------------------------Bem, na primeira pagina consigo capturar as informações normalmente, mas se eu paginar, já não consigo capturar as informações da celula e com isso gera o erro de index que coloquei na resposta anterior. Desculpe pela pergunta idiota, tenho certeza que a solução para isso é besta, mas infelizmente ainda sou novato nessa tecnologia. Forte abraço e mais uma vez obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 18, 2010 Estranho aparentemente esta correto. Como esta seu codigo de paginação? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
sworlls 0 Denunciar post Postado Setembro 18, 2010 Cara, segue o código para paginação. Private Sub GDView_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GDView.PageIndexChanging Try GDView.PageIndex = e.NewPageIndex VarTable.Load(VarConn.Open("String de conexão com o banco", "Instrução SQL")) GDView.DataSource = VarTable GDView.Databind() VarTable.EndLoadData() VarTable.Dispose() Catch LBLstatus.Text = ErrorToString() End Try End Sub Percebi esse problema mesmo em outras paginas que criei com gridview com o objeto DataSource, ou seja, tambem não consigo capturar os valores das celulas depois de paginado. Não poderia ser alguma propriedade do controle na pagina que eu esteja configurando de forma incorreta? Abraços e obrigado mais uma vez. Compartilhar este post Link para o post Compartilhar em outros sites
sworlls 0 Denunciar post Postado Setembro 21, 2010 Quintelab, Tem alguma ideia de como posso resolver isso? Será que não pode ser alguma propriedade do controle que eu não esteja configurando corretamente? Abraços e obrigado pela ajuda. Cara, segue o código para paginação. Private Sub GDView_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GDView.PageIndexChanging Try GDView.PageIndex = e.NewPageIndex VarTable.Load(VarConn.Open("String de conexão com o banco", "Instrução SQL")) GDView.DataSource = VarTable GDView.Databind() VarTable.EndLoadData() VarTable.Dispose() Catch LBLstatus.Text = ErrorToString() End Try End Sub Percebi esse problema mesmo em outras paginas que criei com gridview com o objeto DataSource, ou seja, tambem não consigo capturar os valores das celulas depois de paginado. Não poderia ser alguma propriedade do controle na pagina que eu esteja configurando de forma incorreta? Abraços e obrigado mais uma vez. Compartilhar este post Link para o post Compartilhar em outros sites
sworlls 0 Denunciar post Postado Setembro 22, 2010 Amigos, Descobri depois de muito quebrar a cabeça qual era o problema em minha aplicação. Eu havia pego um código para capturar o click na linha da gridview e assim não utilizar o botão select. sendo assim, consegui ver que o código que peguei estava errado, como segue abaixo Código Certo: Protected Overrides Sub Render(ByVal writer As _ System.Web.UI.HtmlTextWriter) For Each row As GridViewRow In GridView1.Rows If row.RowType = DataControlRowType.DataRow Then row.Attributes("onmouseover") = _ "this.style.cursor='hand';this.style.textDecoration='underline';" row.Attributes("onmouseout") = _ "this.style.textDecoration='none';" ' Set the last parameter to True ' to register for event validation. row.Attributes("onclick") = _ ClientScript.GetPostBackClientHyperlink(GridView1, _ "Select$" & row.RowIndex, True) End If Next MyBase.Render(writer) End Sub Agora o Código errado: Protected Overrides Sub Render(ByVal writer As _ System.Web.UI.HtmlTextWriter) For Each row As GridViewRow In GridView1.Rows If row.RowType = DataControlRowType.DataRow Then row.Attributes("onmouseover") = _ "this.style.cursor='hand';this.style.textDecoration='underline';" row.Attributes("onmouseout") = _ "this.style.textDecoration='none';" ' Set the last parameter to True ' to register for event validation. row.Attributes("onclick") = _ ClientScript.GetPostBackClientHyperlink(GridView1, _ "Select$" & row.DataItemIndex, True) End If Next MyBase.Render(writer) End Sub De qualquer forma agradeço a todos pela força que deram nesse problema. Abraços a todos. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 25, 2010 Que bom que conseguiu. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites