REVISIÓN: Datos no se ordenan correctamente en un control DataGrid en una aplicación de Windows en .NET Framework 1.1

Seleccione idioma Seleccione idioma
Id. de artículo: 828099 - Ver los productos a los que se aplica este artículo
Aviso
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando agregue un control DataGrid a una aplicación de Windows que se ha creado mediante Visual Studio.NET y, a continuación, establece la propiedad DataSource del control DataGrid , puede observar que los datos no está ordenados correctamente después de eliminar un registro de datos del origen de datos.

Solución

Información de actualización de software

Para resolver este problema, obtenga el service pack más reciente para Microsoft .NET Framework 1.1. Para descargar el service pack más reciente, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyId=A8F5654F-088E-40B2-BBDB-A83353618B38

Solución

Para evitar este problema, siga estos pasos:
  1. Busque el método Bind en el archivo Form1.cs:
    frm.Controls.Add(dataGrid); 
    		dataGrid.DataSource = dv;
  2. Reemplace el código que encontró en el paso 1 con el código siguiente:
    dataGrid.DataSource = dv;
    		frm.Controls.Add(dataGrid);
  3. Volver a generar la aplicación y, a continuación, ejecute la aplicación.

    No observará el comportamiento que se menciona en la sección "Síntomas".

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:". Este problema se corrigió por primera vez en Microsoft .NET Framework 1.1 Service Pack 1.

Más información

El código en la sección "Pasos para reproducir el comportamiento" muestra este problema. Esta aplicación contiene un conjunto de datos que contiene una tabla de datos. La tabla de datos se rellena con cinco filas dentro del código. A continuación, los datos se ordenan en una de las columnas que es de tipo Integer en la tabla de datos. Después de esto, el código elimina algunas filas de la tabla de datos.

Pasos para reproducir el comportamiento

  1. Inicie Visual Studio NET..
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto . Aparecerá el cuadro de diálogo Nuevo proyecto .
  3. En Tipos de proyecto , haga clic en Proyectos de Visual C# .
  4. En plantillas , haga clic en Aplicación para Windows y, a continuación, haga clic en Aceptar . De forma predeterminada, se crea un formulario que se denomina Form1.
  5. En la ventana Explorador de soluciones , haga clic con el botón secundario en el archivo Form1.cs y, a continuación, haga clic en Ver 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. En el menú Generar , haga clic en Generar solución .
  8. En el menú Depurar , haga clic en iniciar . Observa que el comportamiento que se menciona en la sección "Síntomas".
Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft
Para obtener más información, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
Ordenar y filtrar datos mediante DataView
http://msdn2.microsoft.com/en-us/library/13wb36xf(vs.71).aspx

Propiedades

Id. de artículo: 828099 - Última revisión: lunes, 21 de mayo de 2007 - Versión: 1.3
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.1
Palabras clave: 
kbmt kbhotfixserver kbqfe kbbug kbnetframe110sp1fix kbdatabinding kbwindowsforms kbtable kbdll kbcontrol kbqfe kbnetframe110presp1fix kbfix KB828099 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 828099

Enviar comentarios

 

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