Como executar paginação com o controle DataGrid Windows usando o .NET translation from VPE for Csharp Visual

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 307710
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 305271.

Para uma versão deste artigo do Microsoft Visual J#. NET, consulte 320626.

Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • sistema
  • System.Data
  • System.Data.SqlClient

NESTA TAREFA

Sumário
O controle DataGrid do Web tem funcionalidades automática ou personalizada paginação internas; no entanto, o controle DataGrid do Windows não possui esses recursos. Este artigo demonstra como criar um simples mecanismo de paginação para o controle DataGrid Windows.

Os exemplos de código neste artigo utilizam DataSet objetos. No ADO.NET, objetos DataSet são preenchidos em uma única operação e residem na memória o tempo todo. Se você estiver trabalhando com um grande DataSet , este artigo descreve como exibir os dados em partes ou páginas programaticamente.

Este exemplo usa a tabela Customers do banco de dados Northwind do Microsoft SQL Server como o banco de dados back-end. Se você se conectar a qualquer outro banco de dados ou a uma tabela diferente, certifique-se que você atualize o código apropriadamente.

Essa técnica tem algumas limitações. Consulte a seção Troubleshooting para obter mais informações.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server 7.0 ou posterior
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • O Visual translation from VPE for Csharp .NET
  • Conceitos básicos do ADO.NET e sintaxe
back to the top

Etapas para adicionar paginação a um controle DataGrid Windows

Quando a página um DataGrid , você exibe dados em tamanho de página "blocos", ou seja, uma página de registros por vez. O código de exemplo a seguir copia os objetos DataRow para cada página do DataSet na memória para uma tabela temporária. A tabela temporária, em seguida, é vinculada ao controle DataGrid .
  1. Abra um novo projeto do Visual translation from VPE for Csharp .NET Windows Application.
  2. Adicione o controle DataGrid e defina sua propriedade ReadOnly como True .
  3. Posicione os seguintes controles adicionais no Form1 e defina suas propriedades conforme mostrado abaixo:
    ControlePropriedade NamePropriedade de texto
    botão btnFirstPagePrimeira página
    botão btnNextPagePróxima página
    TextBox txtDisplayPageNo
    botão btnPreviousPagePágina anterior
    botão btnLastPageÚltima página
    TextBox txtPageSize5
    botão btnFillGridPreencher grade
    DataGrid dataGrid1

  4. Copie e cole o código a seguir na parte superior da janela de código do Form1. Certifique-se que cada espaço para nome é referenciado apenas uma vez. sistema e System.Data já podem ser referenciados por padrão.
    using System;using System.Data;using System.Data.SqlClient;					
  5. Copie e cole o código a seguir no início da public class Form1 para declarar variáveis de nível de formulário para Form1:
    SqlDataAdapter da;DataSet ds;DataTable dtSource;int PageCount;int maxRec;int pageSize;int currentPage;int recNo;					
  6. Copie e cole o código a seguir imediatamente após o método Main static void, para que este código seja o nível de formulário no escopo:
    private void LoadPage() {     int i;     int startRec;     int endRec;     DataTable dtTemp;     //Clone the source table to create a temporary table.     dtTemp = dtSource.Clone();     if (currentPage == PageCount) {	endRec = maxRec;     }     else {	endRec = pageSize * currentPage;     }     startRec = recNo;     //Copy rows from the source table to fill the temporary table.     for (i = startRec; i < endRec; i++) {	dtTemp.ImportRow(dtSource.Rows[i]);	recNo += 1;     }     dataGrid1.DataSource = dtTemp;     DisplayPageInfo();}private void DisplayPageInfo() {     txtDisplayPageNo.Text = "Page " + currentPage.ToString() + "/ " + PageCount.ToString();}private bool CheckFillButton() {  // Check if the user clicks the "Fill Grid" button.  if (pageSize == 0) {     MessageBox.Show("Set the Page Size, and then click the Fill Grid button!");     return false;  }  else {     return true;  }}					
  7. Cole o código seguir o procedimento de evento Form1_Load :
       //Open Connection.    SqlConnection conn = new SqlConnection("Server=server;uid=login;pwd=pwd;database=northwind");   //Set the DataAdapter's query.   da = new SqlDataAdapter("select * from customers", conn);   ds = new DataSet();   //Fill the DataSet.   da.Fill(ds, "customers");   //Set the source table.   dtSource = ds.Tables["customers"];					
  8. Modificar a seqüência de conexão, que aparece no código anterior, conforme apropriado para seu ambiente:
    SqlConnection conn = new SqlConnection("Server=server;uid=login;pwd=pwd;database=northwind");					
  9. Clique duas vezes em Preenchimento grade para abrir a janela de código para btnFillGrid. Copie e cole o seguinte código no procedimento de evento btnFillGrid_Click :
        // Set the start and max records.     pageSize = Convert.ToInt32(txtPageSize.Text);    maxRec = dtSource.Rows.Count;    PageCount = maxRec / pageSize;    //Adjust the page number if the last page contains a partial page.    if ((maxRec % pageSize) > 0) {	   PageCount += 1;    }    // Initial seeings    currentPage = 1;    recNo = 0;    // Display the content of the current page.    LoadPage();					
  10. Clique duas vezes em Primeira página para abrir a janela de código para btnFirstPage. Copie e cole o seguinte código no procedimento de evento btnFirstPage_Click :
       if (CheckFillButton() == false) {     return;   }   //Check if you are already at the first page.   if (currentPage == 1) {       MessageBox.Show("You are at the First Page!");       return;   }   currentPage = 1;   recNo = 0;   LoadPage();					
  11. Clique duas vezes em Avançar para abrir a janela de código para btnNextPage. Copie e cole o seguinte código no procedimento de evento btnNextPage_Click :
       //If the user did not click the "Fill Grid" button, then return.   if (CheckFillButton() == false) {       return;   }   //Check if the user clicks the "Fill Grid" button.   if (pageSize == 0) {     MessageBox.Show("Set the Page Size, and then click the Fill Grid button!");     return;   }   currentPage += 1;   if (currentPage > PageCount) {       currentPage = PageCount;       //Check if you are already at the last page.       if (recNo == maxRec) {           MessageBox.Show("You are at the Last Page!");  	   return;       }   }   LoadPage();					
  12. Clique duas vezes em Voltar para abrir a janela de código para btnPreviousPage. Copie e cole o seguinte código no procedimento de evento btnPreviousPage_Click :
       if (CheckFillButton() == false) {      return;   }   if (currentPage == PageCount) {      recNo = pageSize * (currentPage - 2);   }   currentPage -= 1;   //Check if you are already at the first page.   if (currentPage < 1) {      MessageBox.Show("You are at the First Page!");      currentPage = 1;      return;   }   else {      recNo = pageSize * (currentPage - 1);   }   LoadPage();					
  13. Clique duas vezes em Última página para abrir a janela de código para btnLastPage. Copie e cole o seguinte código no procedimento de evento btnLastPage_Click :
       if (CheckFillButton() == false) {      return;   }   //Check if you are already at the last page.   if (recNo == maxRec) {      MessageBox.Show("You are at the Last Page!");      return;   }   currentPage = PageCount;   recNo = pageSize * (currentPage - 1);   LoadPage();					
  14. Pressione a tecla F5 para compilar e executar o projeto.
  15. Por padrão, o tamanho da página é definido como 5 registros. Você pode alterar isso na caixa de texto.
  16. Clique em preenchimento grade . Observe que o DataGrid é preenchido com 5 registros.
  17. Clique em Primeira página , Avançar , Voltar e Última página para navegar entre páginas.
back to the top

Solução de problemas

  • Essa técnica funciona somente para controles DataGrid somente leitura. Quando você importa uma linha para um objeto DataTable temporário, faça uma cópia. Portanto, as alterações feitas não são salvas para a tabela principal.
  • Essa técnica não funciona (e não é uma coleção ou uma matriz) se desejar que o usuário navegue para registros filho através de um objeto DataRelation ou se você tiver registros que estão vinculados em uma relação pai-filho que aparecem no formulário ao mesmo tempo.
back to the top
Referências
Para obter mais informações sobre como ADO.NET, consulte o seguinte site da MSDN: Para obter mais informações, consulte a documentação do SDK do Microsoft .NET Framework: back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 307710 - Última Revisão: 05/13/2007 05:01:33 - Revisão: 4.4

Microsoft ADO.NET 1.1, Microsoft ADO.NET 1.0, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbhowtomaster kbsqlclient kbsystemdata KB307710 KbMtpt
Comentários