Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在RadGridView中对货币列VB.NET进行排序_Vb.net_Sorting_Currency_Radgridview_Columnsorting - Fatal编程技术网

在RadGridView中对货币列VB.NET进行排序

在RadGridView中对货币列VB.NET进行排序,vb.net,sorting,currency,radgridview,columnsorting,Vb.net,Sorting,Currency,Radgridview,Columnsorting,我正在尝试使用自定义排序对radgridview中的货币列进行排序 我能找到的另一个相关问题是:但它没有提供解决方案 我尝试使用我在下面实现的Telerik示例 Private Sub CustomSort(sender As Object, e As GridViewCustomSortingEventArgs) Dim row1 As Decimal Dim row2 As Decimal If e.Row1.Cells("Pickable").

我正在尝试使用自定义排序对radgridview中的货币列进行排序

我能找到的另一个相关问题是:但它没有提供解决方案

我尝试使用我在下面实现的Telerik示例

Private Sub CustomSort(sender As Object, e As GridViewCustomSortingEventArgs)
    Dim row1 As Decimal
    Dim row2 As Decimal

    If e.Row1.Cells("Pickable").Value.ToString = "" Then
        row1 = 0
    Else
        row1 = Convert.ToDecimal(e.Row1.Cells("Pickable").Value.ToString.Substring(1))
    End If
    If e.Row2.Cells("Pickable").Value.ToString = "" Then
        row2 = 0
    Else
        row2 = Convert.ToDecimal(e.Row2.Cells("Pickable").Value.ToString.Substring(1))
    End If

    If row1 > row2 Then
        e.SortResult = 1
    ElseIf row1 < row2 Then
        e.SortResult = -1
    Else
        e.SortResult = 0
    End If
End Sub
Private Sub-CustomSort(发送方作为对象,e作为GridViewCustomSortingEventArgs)
将行1设置为十进制
将第2行变暗为十进制
如果e.Row1.Cells(“可拾取”).Value.ToString=“”则
第1行=0
其他的
row1=Convert.ToDecimal(如row1.Cells(“Pickable”).Value.ToString.Substring(1))
如果结束
如果e.Row2.单元格(“可拾取”).Value.ToString=“”,则
第2行=0
其他的
row2=Convert.ToDecimal(例如,row2.Cells(“可拾取”).Value.ToString.Substring(1))
如果结束
如果第1行>第2行,则
e、 SortResult=1
如果第1行小于第2行,则
e、 SortResult=-1
其他的
e、 SortResult=0
如果结束
端接头
排序时,它会提供以下结果:

但是那样的话,我就不能按降序排序了

任何帮助都将不胜感激,谢谢

使用下面建议的答案-我已经实现了一个点击事件。

解决方案

假设您的单元格实际包含
字符串,请尝试以下操作:

尺寸值1为十进制
以十进制表示的尺寸值2
Decimal.TryParse(CStr(e.Row1.Cells(“Pickable”).Value)、numberstyle.Currency、Nothing、value1)
Decimal.TryParse(CStr(e.Row2.Cells(“Pickable”).Value)、numberstyle.Currency、Nothing、value2)
e、 SortResult=value1.与(value2)进行比较

如果空白单元格实际上是NULL而不是空的,那么可以利用以下事实:<代码> dBuln.toString 返回空<代码>字符串 >:

Decimal.TryParse(e.Row1.Cells(“Pickable”).Value.ToString(),NumberStyles.Currency,Nothing,value1)
Decimal.TryParse(e.Row2.Cells(“Pickable”).Value.ToString(),NumberStyles.Currency,Nothing,value2)
关于按降序排序,我不知道该控件如何指示排序方向,但是,如果您正在进行自定义排序,我猜这取决于您自己记住它。在这种情况下,可以使用字段指定当前方向:

Private isDescending为布尔值=True
然后,您可以在每次排序时切换该选项,例如在
按钮中。在调用
排序方法之前,单击事件处理程序:

isDescending=不isDescending
然后,可以基于该方向设置比较结果:

尺寸值1为十进制
以十进制表示的尺寸值2
Decimal.TryParse(e.Row1.Cells(“Pickable”).Value.ToString(),NumberStyles.Currency,Nothing,value1)
Decimal.TryParse(e.Row2.Cells(“Pickable”).Value.ToString(),NumberStyles.Currency,Nothing,value2)
e、 SortResult=If(isDescending,value2.CompareTo(value1),value1.CompareTo(value2))

您好,是的,这是一个字符串列。它抛出了一个“从类型'DBNull'到类型'String'的转换是无效的。”错误,关于你的示例,我如何处理空值的转换?我添加了.ToString(),它现在运行,没有错误,但所有结果都被置乱了,请参阅我的帖子我将发布一个屏幕快照啊,我知道为什么会发生这种情况。我在切换方向,好像事件在每个排序中引发一次,但事实并非如此。如果需要执行足够的比较以对数据进行排序,则会多次提出该值。这意味着您需要为每个排序切换一次
isDirection
字段。我不知道你会怎么做,因为我不知道你是怎么开始的。例如,如果您正在单击一个
按钮
并调用一个
排序
方法,则在调用
排序
之前,您将切换该字段。在radgridview列标题上单击鼠标即可激活排序,我已经尝试在radgrid上实现一个点击事件,我已经在我的回答中发布了结果,使用您的答案结合telerik的“我已经实现了我想要的结果”。谢谢你的帮助!