2015-01-07 53 views
1

我正在C#中生成DataTable,我需要禁用通過代碼對列進行排序。代碼是這樣的:禁用列上的排序功能?

DataTable dt = new DataTable(); 
DataRow dr; 

dt.Columns.Add("File_Name"); 
dt.Columns.Add("Create_Date"); 
dt.Columns.Add("Status"); 

dr = dt.NewRow(); 

dataGridView1.DataSource = dt; 

這是如何實現的?我確實檢查了諸如dt.SortMode = <something disabled>之類的東西,但到目前爲止在數據元素上沒有找到任何SortOrder。

+0

你的意思排序數據的DataTable對象本身或排序在任何控件綁定到數據表中的數據排序禁用某些網格列? – KevenDenen

+0

@KevenDenen基本上我不希望用戶點擊列標題對其進行排序。我在代碼中添加了另一行,如果這有助於理解,我會錯過。 – JBurace

+0

然後,您需要更改GridView的屬性,而不是DataTable。在這種情況下,GridView數據是排序的東西,而不是DataTable。 – KevenDenen

回答

1

這是一個更強大的例子。我在Windows窗體應用程序中測試了這個(.NET 4.5,VS 2012)

 DataTable dt = new DataTable(); 

     dt.Columns.Add("File_Name"); 
     dt.Columns.Add("Create_Date"); 
     dt.Columns.Add("Status"); 

     DataRow dr = dt.NewRow(); 
     dr["File_Name"] = "abc.txt"; 
     dr["Create_Date"] = DateTime.Now; 
     dr["Status"] = "Pending"; 

     dt.Rows.Add(dr); 

     dr = dt.NewRow(); 
     dr["File_Name"] = "xyz.bmp"; 
     dr["Create_Date"] = DateTime.Now; 
     dr["Status"] = "Complete"; 

     dt.Rows.Add(dr); 

     dataGridView1.DataSource = dt; 

     foreach (DataGridViewColumn col in dataGridView1.Columns) 
     { 
      col.SortMode = DataGridViewColumnSortMode.NotSortable; 
     } 

希望這會有所幫助。

:)大衛

+0

無論如何,我可以做到這一點沒有循環? – JBurace

+0

我收到語法錯誤:'錯誤預期;或=(不能在聲明中指定構造函數參數)' – JBurace

+0

你還有問題嗎?通常這種例外是錯誤的變量聲明。不知道如何做到這一點沒有循環。 –

0

「AllowUserToOrderColumns」有沒有關係對數據進行排序,它決定了用戶是否被允許重新排列網格中的列。您可以通過設置相應的列SortMode這樣

myDataGridViewTextBoxColumn.SortMode = DataGridViewColumnSortMode.NotSortable