2012-02-13 5 views
1

datagridviewの列見出しをクリックすると、列の種類に基づいて列が自動的にソートされるようです。私はいくつかの数字を示すコラムを持っています。列の型がstringの場合、 "1"、 "20"、 "3"に "1"、 "20"、 "3"がソートされます。列の型がdoubleの場合、結果は「1」、「3」、「20」にソートされます。ただし、数字に誤りがあり、エラーメッセージ(テキスト)が数値ではなくセルに表示されます。だから私はダブルとして列の種類を設定することはできません。私はこれらのエラーメッセージを無視して、すべての数字を並べ替えたい。これどうやってするの?vb.netでは、列見出しの数値とテキストを含むデータグリッドビューの列をソートする方法

また、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

あなたは2つの異なる質問をしています。
最初のもの:DefalutCellStyleの「Null値」を見てください。ヌル値を取得した場合はテキストを入れないでください。 2番目の質問については
:代わりに、列ヘッダ、creataているContextMenuStripをクリックすると、同じ結果を達成するために、グリッドに割り当てるの:オーバーライドする必要はありませんし、行うためのシンプルなものを;)

+0

こんにちはアンドレア、あなたの答えに感謝。私の問題は、エラーメッセージをセルに表示する必要があることです。だから私は数字とテキストを列に入れています。並べ替えるときだけ、すべての数値を並べ替える(最後にすべての行にエラーメッセージが表示される)。私の2番目の質問は最初の質問と関連しています。なぜなら私はすでに列見出しのクリックイベントを使用していたからです。だから私が列の見出しをクリックすると、列がソートされ、背景色も追加されます。しかし、ソートはシステムによってデフォルトです。ソートを変更したい。 – Summer

+0

本当にセルにエラーを表示する必要はありますか?個人的に私はgrid.rows(e.row.index).errortext = "エラーメッセージ"を使うことを好みます。これによりソートの問題を回避できます。 BTW:今はチェックする時間がありませんが、別の方法で列を並べ替えることができます。メモリが正しく機能する場合は、列の順序をカスタマイズできます。 –

関連する問題