4

DataTable にバインドされた DataGridView があります。疑似整数の列が 1 つあります。ほとんどの場合は整数ですが、N/A の場合もあります。この列は varchar ですが、N/A を -1 として扱い、int 列のように並べ替えたいと考えています。

DataGridView はこれを提供します --それが DataTable にバインドされていない場合。バインドされている場合は、バインドされたオブジェクトの並べ替えメカニズムが使用され、DataTable はその機能を公開しません。

必要な動作で DataTable にカスタム列を作成できますが、DataGridView は DataTable にバインドされているため、表示されている列で並べ替えられます。DataGridView でカスタム列を作成できますが、ほとんど機能するソリューションが既にある場合は、テーブルを仮想モードに設定して並べ替える必要があります。

疑似 int 列を必要に応じてソートするにはどうすればよいですか?可能な場合は、int でソートしますか? このシナリオは信じられないほど一般的であるように思われ、どこかで提供されていると確信しています。

4

5 に答える 5

3

これと同様の並べ替えの問題に対処しなければならなかったとき、私のお気に入りの方法は、DataTable に列を追加し、疑似 int を必要な並べ替え可能な int に解析することです。次に、DataGridView のバインディングで、そのデータ列を単純に非表示にすることができますが、そこにあるため、引き続き並べ替えることができます。これを行うためにメモリに少し余分なデータが追加されるため、パフォーマンスの影響と並べ替えられたデータのサイズによっては、これが潜在的な問題になる可能性があります。また、データが変更されるたびに、この余分な列が一列に並んでいることを確認する必要があります。

于 2010-07-14T10:52:40.943 に答える
1

DataTableではなくDataViewにバインドしてみてください。

private void SortByTwoColumns()
{
   DataView myDataView = DataTable1.DefaultView;
   myDataView.Sort = "State, ZipCode DESC";
   myGridView.DataSource = myDataView;
}

N/A データを処理するには、SELECTステートメント、RowPrePaintイベントなど、いくつかの選択肢があります。

于 2008-11-10T05:54:18.947 に答える
0

おそらく、私のブログ投稿のコードを変更して、int 列に固有の IComparer を提供することができます。

http://adamhouldsworth.blogspot.com/2010/01/bound-datagridview-sorting.html

于 2010-07-14T10:44:32.763 に答える