FIX: 数据是不正确排序在.net Framework 1.1 的 Windows 应用程序中的数据网格控件

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 828099
注意
本文已归档。它按“原样”提供,并且不再更新。
症状
当您将 DataGrid 控件添加到一个 Windows 应用程序,通过使用 Microsoft 可 Visual Studio 的.net 创建的则设置 DataGrid 控件的 数据源 属性时您可能会注意到的数据不正确排序后数据源中删除一条数据记录。
解决方案

软件更新信息

若要解决此问题,获得最新的 service pack,对于在 Microsoft.net Framework 1.1。要下载最新的 service pack,请访问下面的 Microsoft 网站:
替代方法
要变通解决此问题,请按照下列步骤操作:
  1. Form1.cs 文件中找到 Bind 方法:
    frm.Controls.Add(dataGrid); 		dataGrid.DataSource = dv;
  2. 在第 1 步用下面的代码中找到的代码替换:
    dataGrid.DataSource = dv;		frm.Controls.Add(dataGrid);
  3. 重新生成了的应用程序,然后运行该应用程序。

    您不会注意到在"症状"一节中提到的行为。
状态
Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。 Microsoft.net Framework 1.1 Service Pack 1 中,第一次已得到纠正此问题。
更多信息
在"步骤重现行为"部分中代码演示了此问题。此应用程序包含一个数据集包含一个数据的表。用代码内的五个行填充数据表。然后,按一列的数据表中的 Integer 类型的数据进行排序。之后,代码,请从数据表中删除一些行。

重现行为的步骤

  1. 启动 Visual Studio.net。
  2. 文件 菜单上指向 新建,然后单击 项目。在 新建项目 对话框。
  3. 项目类型 框中,单击 Visual C# 项目
  4. 模板 框中,单击 Windows 应用程序,然后单击 确定。默认状态下,创建名为 Form1 的窗体。
  5. 解决方案资源管理器 窗口中用鼠标右键单击该 Form1.cs 文件,然后单击 查看代码
  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. 生成 菜单上单击 生成解决方案
  8. 调试 菜单上单击 开始。您会注意到在"症状"一节中提到的行为。
有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明
有关详细的信息,请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:
排序和筛选使用一个 DataView 的数据
http://msdn2.microsoft.com/en-us/library/13wb36xf(vs.71).aspx

属性

文章 ID:828099 - 上次审阅时间:01/17/2015 05:22:25 - 修订版本: 1.3

Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbnetframe110sp1fix kbdatabinding kbwindowsforms kbtable kbdll kbcontrol kbqfe kbnetframe110presp1fix kbfix KB828099 KbMtzh
反馈