0

データベースから入力したグリッドビューがあり、グリッドビュー内のすべての数値項目を右揃えにしたいのですが、ステートメントにIsNumeric(row.Cells(i).Text)非常に長い時間がかかる場合、これを修正する他の方法はありますか?

コード:

他の方法では番号を右に揃えるのに時間がかかります

             For Each row As GridViewRow In Me.gwResult.Rows
                For i As Integer = 0 To headCell - 1
                    If IsNumeric(row.Cells(i).Text) Then
                        row.Cells(i).HorizontalAlign = HorizontalAlign.Right
                    End If
                Next
            Next
4

2 に答える 2

1

最善の方法は、グリッドをデータソースにバインドする前に、どの列が数値であるかを調べることです。そのRowDataBound場合GridView、データバインドされている現在の列がnumericColumnsコレクション内にあるかどうかを確認できます。

'Find numeric properties of the type beehing databound
Dim numericColumns = New HashSet(GetType(MyDataType).GetProperties() _
                     .Where(Function(x) IsNumericType(x.PropertyType)))
                     .Select(Function(x) x.Name))

'And for DataTable it would look like this
Dim numericColumns = New HashSet(dt.Columns.Cast(Of DataColumn)() _
                     .Where(Function(x) IsNumericType(x.DataType))) _
                     .Select(Function(x) x.ColumnName))

Private Shared Function IsNumericType(dataType As Type) As Boolean
   Dim code = CInt(Type.GetTypeCode(dataType ))
   Return code >= 4 AndAlso code <= 15
End Function
于 2014-03-20T12:50:26.100 に答える
1

このコードを使用して、バインド後に数値を識別していますDataSource。これにより、グリッド データの分析に余分な時間が追加されます。RowDataBoundグリッドビューのイベントで同じコードを使用してみてください。

于 2014-03-20T12:16:43.170 に答える