2012-02-13 17 views
1

似乎在單擊datagridview列標題時,列將根據列類型自動排序。我有一列顯示一些數字。如果列類型是字符串,則將「1」,「20」,「3」分爲「1」,「20」,「3」。如果列類型是雙精度型,它將排序爲「1」,「3」,「20」,這是我想要的結果。但是,數字中可能會有一些錯誤,錯誤消息(文本)將顯示在單元格中而不是數字中。所以我不能將列類型設置爲double。我想忽略這些錯誤消息並對所有數字進行排序。我怎樣才能做到這一點?在vb.net中,如何使用列標題上的數字和文本對datagrid視圖列進行排序單擊

此外,我需要添加一些背景顏色到datagridview中的不同行。所以在列標題點擊事件中,我稱之爲bkgColor Sub來實現這一點。我的問題是,如何在這個事件中重寫排序方法?

Private Sub DataGridView1_ColumnHeaderMouseClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick 
    Try 

     bkgColor(DataGridView1) 'A Sub used to add background colors to different rows in datagridview 
    Catch 
     StatusUpdate("Unable to sort datagrid view", True) 
    End Try 

End Sub 

回答

0

你在問兩個不同的問題。
第一步:查看DefalutCellStyle的「空值」:如果獲得空值,則不要放置文本。
對於第二個問題:不是單擊列標題,而是創建一個ContextMenuStrip並將其分配給網格以實現相同的結果:無需重寫並且執行更簡單的操作;)

+0

嗨Andrea,感謝您的回答。我的問題是我必須在單元格中顯示錯誤消息。所以我在列中有數字和文字。只有在排序時,我想對所有數字進行排序(可能將所有包含錯誤消息的行放在最後)。我的第二個問題與第一個問題有關,因爲我已經使用了列標題點擊事件。所以當我點擊列標題時,列將被排序並且還會添加背景顏色。但排序是系統默認的。我想改變排序。 – Summer 2012-02-13 15:52:01

+0

你真的需要在單元格中顯示錯誤嗎?我個人更喜歡使用grid.rows(e.row.index).errortext =「錯誤消息」。這將避免你在排序中的問題。順便說一句:我沒有時間檢查現在,但也許你可以用另一種方式對列進行排序:如果我的內存正確地服務,您可以自定義列順序... – 2012-02-13 17:28:54

相關問題