FIX: 資料未排序正確地在.NET Framework 1.1 中的 Windows 應用程式在 DataGrid 控制項上

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:828099
注意事項
本文已封存。本文係以「現狀」提供且不會再更新。
徵狀
當您將 DataGrid 控制項中加入使用 Microsoft Visual Studio.NET 所建立的 Windows 應用程式,而且設定 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 中獲得修正。
其他相關資訊
< 重現這個問題的步驟 > 一節中程式碼會示範這個問題。這個應用程式中包含一個資料集包含一個資料的資料表。資料表格會填入程式碼內的五列。然後,資料排序在其中一個是資料表格中的 整數 型別資料行。此之後, 程式碼從資料表格中刪除某些資料列。

重現這個問題的步驟

  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 開發 o 人 h 員 û 工 u 具 ã 網路 (MSDN) 網站]:

警告:本文為自動翻譯

內容

文章識別碼: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
意見反應