CORRECÇÃO: Dados não são ordenados correctamente num controlo DataGrid numa aplicação do Windows no .NET Framework 1.1

Traduções de Artigos Traduções de Artigos
Artigo: 828099 - Ver produtos para os quais este artigo se aplica.
Importante
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando adiciona um controlo DataGrid a uma aplicação do Windows é criada utilizando o Microsoft Visual Studio .NET e, em seguida, definir a propriedade origem de dados do controlo DataGrid , poderá notar que os dados não são ordenados correctamente depois de eliminar um registo de dados da origem de dados.

Resolução

Informações de actualização de software

Para resolver este problema, obtenha o service pack mais recente para o Microsoft .NET Framework 1.1. Para transferir o service pack mais recente, visite o seguinte Web site da Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyId=A8F5654F-088E-40B2-BBDB-A83353618B38

Como contornar

Para contornar este problema, siga estes passos:
  1. Localizar o método de ligação no ficheiro de Form1.cs:
    frm.Controls.Add(dataGrid); 
    		dataGrid.DataSource = dv;
  2. Substitua o código que localizou no passo 1 com o seguinte código:
    dataGrid.DataSource = dv;
    		frm.Controls.Add(dataGrid);
  3. Recriar a aplicação e, em seguida, execute a aplicação.

    Não irá detectar o comportamento mencionado na secção "Sintomas".

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a". Este problema foi corrigido pela primeira vez no Microsoft .NET Framework 1.1 Service Pack 1.

Mais Informação

O código na secção "Passos para reproduzir o comportamento" demonstra este problema. Esta aplicação contém um conjunto de dados que contém uma tabela de dados. A tabela de dados é povoada com cinco linhas dentro de código. Em seguida, os dados são ordenados das colunas que é do tipo número inteiro na tabela de dados. Depois disto, o código elimina algumas linhas da tabela de dados.

Passos para reproduzir o comportamento

  1. Inicie o Visual Studio NET..
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto . A caixa de diálogo Novo projecto é apresentada.
  3. Em Project Types , clique em Visual C# Projects .
  4. Em modelos , clique em Aplicação do Windows e, em seguida, clique em OK . Por predefinição, é criado um formulário é denominado Form1.
  5. Na janela Solution Explorer , clique com o botão direito do rato no ficheiro de Form1.cs e, em seguida, clique em Código .
  6. Replace the existing code with the following code:
    using System;
    using System.Data;
    using System.Windows.Forms;
    
    class TestForm : Form 
    {
    	public TestForm()
    	{
    		InitializeComponent();
    	}
    
    	private void InitializeComponent()
    	{
    		DataSet ds = new DataSet();
    		DataTable dt = ds.Tables.Add("Customers");
    		DataColumn c = dt.Columns.Add("Id", typeof(int));
    		dt.Columns.Add("Name", typeof(string));
    		dt.Columns.Add("Related", typeof(string));
    		DataRow dr= dt.NewRow();
    		DataRow dr1= dt.NewRow();
    		DataRow dr2= dt.NewRow();
    		DataRow dr3= dt.NewRow();
    		DataRow dr4= dt.NewRow();
    		//
    		dr["Id"]=1;
    		dr["Name"]="A";
    		dr["Related"]="";
    		dt.Rows.Add(dr);
    		//
    		dr1["Id"]=2;
    		dr1["Name"]="B";
    		dr1["Related"]="A";
    		dt.Rows.Add(dr1);
    		//
    		dr2["Id"]=3;
    		dr2["Name"]="C";
    		dr2["Related"]="";
    		dt.Rows.Add(dr2);
    		//
    		dr3["Id"]=4;
    		dr3["Name"]="D";
    		dr3["Related"]="A";
    		dt.Rows.Add(dr3);
    		//
    		dr4["Id"]=5;
    		dr4["Name"]="E";
    		dr4["Related"]="";
    		dt.Rows.Add(dr4);
    		//	
    		DataView dv = new DataView(ds.Tables["Customers"]);
    		dv.Sort = "Id ASC";
    		//
    		Bind(dv);
    		//Create another view with the rowFilter property that is set 
      //to the name value of the row that will be deleted.
    		DataView dv1 = new DataView(ds.Tables["Customers"]);
    		dv1.RowFilter = String.Format("Related = '{0}'", dv[0]["Name"]);
    		for (int i = 0; i < dv1.Count; i++) 
    		{
    			dv1[i].Delete();
    		}
    
    		dv[0].Delete();
    
    		for (int i = 0; i < dv.Count; i++) 
    		{
    			dv[i][0] = i + 1;
    		} 
    	}
    
    	public void Bind(DataView dv)
    	{
    		Form frm = this;
    		DataGrid dataGrid = new DataGrid();
    		dataGrid.Dock = DockStyle.Fill;
    		dataGrid.Size = frm.ClientSize;
    		frm.Controls.Add(dataGrid); 
    		dataGrid.DataSource = dv;
    	}
    
    	public static void Main()
    	{
    		try 
    		{
    			Application.Run(new TestForm());
    		} 
    		catch (Exception exc) 
    		{
    			MessageBox.Show(exc.ToString());
    		} 
    	}
    }
  7. No menu criar , clique em Criar soluções .
  8. No menu Debug , clique em Iniciar . Repare o comportamento mencionado na secção "Sintomas".
Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft
Para mais informações, visite o seguinte Web site da Microsoft Developer Network (MSDN):
Ordenar e filtrar dados com um DataView
http://msdn2.microsoft.com/en-us/library/13wb36xf(vs.71).aspx

Propriedades

Artigo: 828099 - Última revisão: 21 de maio de 2007 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbhotfixserver kbqfe kbbug kbnetframe110sp1fix kbdatabinding kbwindowsforms kbtable kbdll kbcontrol kbqfe kbnetframe110presp1fix kbfix KB828099 KbMtpt
Tradução automática
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 828099

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com