|
■No46252 (επιστημη さん) に返信 >>下記のように表示するにはサンプルをどのように変更すればよいでしょうか・・・ >>空白はソートを無視する。のようにできれば良いのですが・・・ > > "空白はいかなる文字列より大きい"と判断される比較オブジェクト書くだけじゃん。 > >>もう少し具体的なサンプルを頂ければと幸いです。 > > これ以上具体的て? > まさか"そのものヅバリ"な答もらってそのままパクりたいってこと? >
Private Class RowComparer Implements System.Collections.IComparer
Private sortOrderModifier As Integer = 1
Public Sub New(ByVal sortOrder As SortOrder) If sortOrder = sortOrder.Descending Then sortOrderModifier = -1 ElseIf sortOrder = sortOrder.Ascending Then
sortOrderModifier = 1 End If End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _ Implements System.Collections.IComparer.Compare
Dim DataGridViewRow1 As DataGridViewRow = CType(x, DataGridViewRow) Dim DataGridViewRow2 As DataGridViewRow = CType(y, DataGridViewRow)
' Try to sort based on the Last Name column. Dim CompareResult As Integer = System.String.Compare( _ DataGridViewRow1.Cells(1).Value.ToString(), _ DataGridViewRow2.Cells(1).Value.ToString())
' If the Last Names are equal, sort based on the First Name. If CompareResult = 0 Then CompareResult = System.String.Compare( _ DataGridViewRow1.Cells(0).Value.ToString(), _ DataGridViewRow2.Cells(0).Value.ToString()) End If Return CompareResult * sortOrderModifier End Function End Class
下記コードでセル(1)同士を比較し、 DataGridViewRow1.Cells(1).Value.ToString(), _ DataGridViewRow2.Cells(1).Value.ToString()) イコールだったらCompareResultを0にしてセル(0)同士を比較ということですよね。
>"空白はいかなる文字列より大きい"と判断される比較オブジェクト書くだけじゃん。 比較オブジェクトを調べてあまりまだピンときていないのですが、下記のようにセル1同士を比較して 空白だったらComparaResultを2(空白はいかなる文字列より大きい)という判断を作ってみました
If System.String.Compare(DataGridViewRow1.Cells(1).Value.Equals(""), DataGridViewRow2.Cells(1).Value.Equals("")) Then CompareResult = 2 End If
思ったとおりの動きもするのですが、アルファベットなどを入力すると、途中で空白ができてしまったりします。。。 一体ドコに間違いがあるのでしょうか。教えて頂ければ幸いです。 どうぞよろしくお願いします。
|