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

文章翻譯 文章翻譯
文章編號: 828099 - 檢視此文章適用的產品。
注意事項
全部展開 | 全部摺疊

在此頁中

徵狀

當您將 DataGrid 控制項中加入使用 Microsoft Visual Studio.NET 所建立的 Windows 應用程式,而且設定 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 中獲得修正。

其他相關資訊

< 重現這個問題的步驟 > 一節中程式碼會示範這個問題。這個應用程式中包含一個資料集包含一個資料的資料表。資料表格會填入程式碼內的五列。然後,資料排序在其中一個是資料表格中的 整數 型別資料行。此之後, 程式碼從資料表格中刪除某些資料列。

重現這個問題的步驟

  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) 網站]:
排序和篩選資料使用 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
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本: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