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

文章翻译 文章翻译
文章编号: 828099 - 查看本文应用于的产品
注意
展开全部 | 关闭全部

本文内容

症状

当您将 DataGrid 控件添加到一个 Windows 应用程序,通过使用 Microsoft 可 Visual Studio 的.net 创建的则设置 DataGrid 控件的 数据源 属性时您可能会注意到的数据不正确排序后数据源中删除一条数据记录。

解决方案

软件更新信息

若要解决此问题,获得最新的 service pack,对于在 Microsoft.net Framework 1.1。要下载最新的 service pack,请访问下面的 Microsoft 网站:
http://www.microsoft.com/downloads/details.aspx?FamilyId=A8F5654F-088E-40B2-BBDB-A83353618B38

替代方法

要变通解决此问题,请按照下列步骤操作:
  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

属性

文章编号: 828099 - 最后修改: 2007年5月21日 - 修订: 1.3
这篇文章中的信息适用于:
  • Microsoft .NET Framework 1.1
关键字:?
kbmt kbhotfixserver kbqfe kbbug kbnetframe110sp1fix kbdatabinding kbwindowsforms kbtable kbdll kbcontrol kbqfe kbnetframe110presp1fix kbfix KB828099 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 828099
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

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