我正在查询SSMS中的一张表,以填充Visual Studio中的gridview。我建立了查询以将varchar值排序为数字值。我尝试了几种不同的方法在SSMS中都取得成功。
ORDER BY case
when IsNumeric(mycol) = 1 then CONVERT(float, mycol)
else mycol
end
ORDER BY try_convert(float, mycol)
当我对gridview进行排序时,返回的值将按字符串(1、100、2、200)进行排序。我在VS中跟踪了查询,将其复制到SSMS中并返回了正确的结果。任何人都可以阐明这个问题吗?
答案 0 :(得分:0)
问题不是我的查询,而是GridViewSortEvent。排序时,我在查询数据并将其绑定到gridview的地方调用GV_Sorting,然后排序事件再次将其作为字符串值进行了排序,因为表中的列为varchars。我通过取消方法第一行中的排序事件来停止此操作。
e.Cancel = true;