關於DataGridView控制項中的資料排序

2022-07-19 03:00:13 字數 1287 閱讀 2791

windows 窗體 datagridview 控制項中的列排序有三種模式,通過每一列的sortmode屬性修改,改屬性是datagridviewcolumnsortmode的列舉值之一。

datagridviewcolumnsortmode列舉:

1.automatic:文字框的預設排序方式。除非將列表頭用於選擇,否則單擊列表頭會對相應的列進行排序。

2.notsortable:非文字框的預設排序方式。可以以程式設計方式對此列進行排序;未為排序標誌符號保留空間。

3.programmatic:可以以程式設計方式對此列排序,而且為排序標誌符號保留空間。

以程式設計方式進行排序:

可以通過呼叫 的 方法以程式設計方式對其排序。

當通過設定 屬性將 控制項繫結到外部資料來源時,sort(datagridviewcolumn,listsortdirection) 方法過載不能用於未繫結列。此外,當 屬性為 true 時,可以僅為繫結列呼叫此過載。若要確定某一列是否為資料繫結列,請檢查 屬性值。在繫結模式下對未繫結列排序不受支援。

自定義排序:

可以通過使用 方法的 sort(icomparer) 過載或通過處理 事件來自定義 。

sort(icomparer) 方法過載採用乙個實現 介面的類的乙個例項作為引數。當希望提供自定義排序時,此過載很有用;例如,當某一列中的值沒有自然排序順序時,或者當自然排序順序不適用時。在這種情況下,不能使用自動排序,但是可能仍然希望使用者通過單擊列標頭進行排序。可以在 事件的處理程式中呼叫此過載,即使不使用列標頭進行選擇。

注意:僅當 控制項未繫結到外部資料來源且 屬性值為 false 時,sort(icomparer) 方法過載才起作用。若要為繫結到外部資料來源的列自定義排序,必須使用由該資料來源提供的排序操作。在虛擬模式中,必須為未繫結列提供您自己的排序操作。

若要使用 sort(icomparer) 方法過載,必須建立您自己的類,該類實現 介面。此介面要求您的類實現 方法,在呼叫 sort(icomparer) 方法過載時,將 物件作為輸入傳給該方法。使用此方法,您可以基於任一列中的值計算正確的行排序。

sort(icomparer) 方法過載不設定 和 屬性,因此必須總是設定 屬性以顯示排序標誌符號。

作為 sort(icomparer) 方法過載的乙個替代方法,可以通過為 事件實現處理程式來提供自定義排序。當使用者單擊為自動排序配置的列的標頭時,或者當呼叫 方法的 sort(datagridviewcolumn,listsortdirection) 過載時,將發生此事件。對控制項中的每對行均發生該事件,這使您能夠計算它們的正確順序。

注意:當 屬性已設定時,或者當 屬性值為 true 時,不會發生 事件。

DataGridView中cell 值的控制

首先,要先定義乙個class級的變數 放在form內,可別放在外面 private datagridviewtextboxeditingcontrol editingcontrol 其次,新增editingcontrolshowing事件委託 this.dgvdetails.editingcontr...

DataGridView中cell 值的控制

首先,要先定義乙個class級的變數 放在form內,可別放在外面 private datagridviewtextboxeditingcontrol editingcontrol 其次,新增editingcontrolshowing事件委託 this.dgvdetails.editingcontr...

關於列印dataGridView中資料

第一步 向窗體拖放三個列印元件printdialog1,printpreviewdialog1,printdocument1 第二步 註冊列印的button事件 private void button1 click object sender,eventargs e 第三步 註冊printdocum...