Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

drigo

[Resolvido] Problemas com Paginação em Gridview ...

Recommended Posts

Olaa,

 

 

 

Faço uso de um Gridview que é carregado por valores vindos de uma determinada tabela do banco, mas como são muitos valores eu necessito que esses dados sejam mostrados atraves de paginação do respectivo Gridview, mas quando vou na seção de propriedades do Gridviw e coloco "AllowPaging =True" nada é mostrado no gridview, so é mostrado os dados se "AllowPaging =False". Como posso configurar o Gridview para mostrar de 20 em 20 resgistros e a paginação funcionar perfeitamente ???

 

 

Desde Já, Agradeçoo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaa,

 

Segue abaixo o código solicitado, no que se refere a paginação eu ativo a mesma nas propriedades do Gridview

(AllowPagging=True)...

 


protected void preencherGridView() {

string ConnectionString = "...";

try {

conn.ConnectionString = ConnectionString;
conn.Open();

OracleCommand preenchergrid = new OracleCommand("select NOMEUSUARIO,TELEFONE,ENDERECO from CLIENTES.TAB_CADASTRO", conn);

GridPreencher = preenchergrid.ExecuteReader();

while (GridPreencher.Read()){

        Dadosgdv.DataSource = GridPreencher;
        Dadosgdv.DataBind();

      }
         
    }
        catch (Exception Egrid) { }

        finally{

            if (GridPreencher != null)
            {
                GridPreencher.Close();
            }

            if (conn != null)
            {
                conn.Close();
            }
   }
}

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaa...

 

 

Consegui resolver o problema, muito obrigado mesmo por sua ajuda. Mas surgiu outro problema: Inicialmente eu Alimentei um DataTable para definir ele como DataSource no meu GridView, consegui carregar os dados sem nenhum tipo de problema, mas eu realizo outros tipos de operações nesse mesmo GridView, como SELECTS que irão novamente recaregar esse Grid e mostrar novos resultados, mas o seguinte erro é apresentado: "Both DataSource and DataSourceID are defined on 'GridDados'.Remove one definition." Existe a possibilidade de eu realizar esses SELECTS e preencher novamente esses valores resultantes no GridView???

 

Segue abaixo os códigos, para uma melhor visualização:

 


//Função que recebe o SELECT como parâmetro e preenche o resultado do mesmo no GridView ...
protecetd void BuscarDados(string selectbusca){

        //Limpa o GridView.............
        gdvAuditoria.DataSource = null;
        gdvAuditoria.DataBind();
        //.............................
       
        string ConnectionString = "...";

        OracleConnection conectar = new OracleConnection();

        OracleDataReader buscar = null;

        try{

            conectar.ConnectionString = ConnectionString;
            conectar.Open();

            //"selectbusca" vai ser recebida por parâmetro e contêm o Select que será executado...
            OracleCommand cmd = new OracleCommand(selectbusca, conectar);

            buscar = cmd.ExecuteReader();

            while (buscar.Read())
            {
                GridDados.DataSource = buscaInfo;

                GridDados.DataBind();

            }
           
         }
        catch (Exception EGrid) { }
    }

 

//CÓDIGO CONTIDO NO CODE-BEHIND, CORRESPONDENTE AO PREENCHIMENTO INICIAL DO GRIDVIEW...
 <asp:GridView ID="GridDados" DataSourceID="Carregar" runat="server"
 Height="206px" Width="244px" ForeColor="#333333" PageSize="20" AllowPaging="True" AllowSorting="True">
 <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
 <RowStyle BackColor="#EFF3FB" />
 <EditRowStyle BackColor="#2461BF" />
 <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
 <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
 <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="Blue" />
 <AlternatingRowStyle BackColor="White" />
 </asp:GridView><br />
            
 <asp:SqlDataSource ID="Carregar" runat="server" 
 ConnectionString="..." ProviderName="System.Data.OracleClient" 
 SelectCommand="SELECT NOME,ENDERECO,TELEFONE from CLIENTES.CADASTRO"> 
 </asp:SqlDataSource>

Novamente Muito obrigado ...

Grande Abraçoo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaa,

 

 

Entendi perfeitamente seu comentário, e foi retirado a propriedade DataSourceID="Carregar" , e o objeto <asp:SqlDataSource>, mas fazendo o carregamento pelo C#, os valores do gridview somente são preenchidos se a Paginação e o Sorting estiverem como FALSE. Carregando pelo C# e mantendo a paginação e Sorting como verdadeiro,o GridView não é preenchido e o seguinte erro é apresentado:"The data source does not support server-side data paging"...

 

Abraçoo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaa...

 

O problema anterior citado por você ja foi corrigido, e o grid ja esta carregando os dados perfeitamente, mas o problema referente ao Pagging e Sorting como true, citado anteriormente persiste...

 

 

     while (buscar.Read()) 
            { 
                GridDados.DataSource = buscar; 
 
                GridDados.DataBind(); 
 
           }

Novamente muito obrigado pela paciência ...

Abraço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste novamente o html da sua grid.

E o correto seria passar um DataTable como DataSource da sua grid e não um DataReader, o DataReader mantem conexão aberta com o banco, alimente um datatable e passe ele como datasource.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

como disse o quintelab, eh muito melhor utilizar o datatable para montar grids

 

da para fazer a mesma rotina que você esta utilizando

 

DataTable DT = new DataTable();
DT = Consulta;
if (DT.rows.count != 0)
{
  GridDados.DataSource = DT; 
  GridDados.DataBind(); 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaa...

 

Segue abaixo o código solicitado com as devidas modificações, baseado na implementação do "Rafael Mitsunaka" mas os seguintes erros são apresentados:

 

1)Data.DataTable' does not contain a definition for 'rows'...

 

2)Cannot implicitly convert type 'int' to 'System.Data.DataTable'...

 

 

    
    protected void Buscar(string statement){

    string ConnectionString = "...";

    OracleConnection conn = new OracleConnection();

    DataTable dt = new DataTable();
       
    try{

         conn.ConnectionString = ConnectionString;
         conn.Open();

            OracleCommand cmd = new OracleCommand(statement, conn);

            dt = cmd.ExecuteNonQuery();

            if (dt.rows.count != 0){

                GridView.DataSource = dt;
                GridView.DataBind();

            }
         }
        catch (Exception EGridView) { }
    }

Novamente grato pela paciência...

Compartilhar este post


Link para o post
Compartilhar em outros sites

quintelab,

 

Fiz algumas modificações, e já consegui preencher o GridView (Acredito que segue as suas indicações enviadas no último post enviado por você). Mas a paginação e Sorting quando defidos como true: apresentam os seguintes erros:

 

1)The GridView 'GridView1' fired event PageIndexChanging which wasn't handled.

 

2)The GridView 'GridView1' fired event Sorting which wasn't handled.

 

Segue abaixo o código para você ter uma melhor visualização:

    protected void PreencherGrid(string statement){

        string ConnectionString = "...";

        OracleConnection conn = new OracleConnection(ConnectionString);

        DataTable dt = new DataTable();

        DataSet ds = new DataSet(); 

        try{

            conn.Open();

            OracleDataAdapter Odt = new OracleDataAdapter(statement,conn);

            Odt.Fill(ds,"CLIENTES");

            GridView1.DataSource = ds.Tables["CLIENTES"].DefaultView;
            GridView1.DataBind();
            
         }
        catch (Exception EGrid) { }
    }

 <asp:GridView ID="GridView1"  runat="server" 
                Height="206px" Width="244px" ForeColor="#333333" PageSize="20" 
                 AllowSorting="True" AllowPaging="True">
                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#EFF3FB" />
                <EditRowStyle BackColor="#2461BF" />
                <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
                
            </asp:GridView>

Abraço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta correto o ultimo código, mas quando você utiliza paginação e ordenação você precisa dos eventos de ambos no lado do c#. Você precisa criar estes eventos e associa-los a sua grid. Basta fazer uma busca por GridView + PageIndexChanging e GridView + Sorting

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olaa...

 

 

Consegui Resolver o Problema, novamente obrigado por sua paciência e atenção...

 

 

 

Grande Abraçoo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.