当你必须浮动类似数字的值时,如何在asp.net中对网格视图进行排序



我有一个SQL数据库,列名为"No",数据类型为varchar(50(,值为1.1、1.2、1.12、1.13、1.21……,我在网格视图中显示数据,排序顺序为"ASC"。现在的问题是我想像一样对数据进行排序

1.1,1.2,1.12,1.13中,1.21,…

但是我得到的结果是

1.1,1.12,1.13中,1.2,1.21,…

这是我的代码

using (SqlConnection cnn = new SqlConnection(cnnString))

{
using (SqlCommand cmd = new SqlCommand(command, cnn))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = cnn;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
DataView dv = dt.DefaultView;
dv.Sort = "No ASC";
GridView4.DataSource = dv;
GridView4.DataBind();
}
}
}
} 
  1. 尝试将每个数字转换为字符串,然后用'.'->将其拆分var结果=数字。拆分('.'(
  2. 以Convert.ToInt32(result[1](为例,因此对于数字1.12,您将只取12并将其放入某个新数组中

对于您的示例1.1、1.2、1.12、1.13、1.21,您将拥有具有1,2,12,13,21的新阵列。

  1. 对该数组进行排序,然后在其每个成员上添加前缀"1">

  2. 在该部分之后,您将获得类似于{1.1,1.2,1.12,1.13,1.21,…}的数组

这是我的逻辑,数字以1开头,但如果你的数字以其他数字开头,你可以对每个数字执行相同的逻辑,在每个获得和排序的数组之后,插入一个特殊的数组:示例:{1.1,1.2,1.12,…}{2.1,2.2,2.12,…}->{1.1,1.21,1.12,…,2.11,2.2,2.12..}

我希望我的逻辑能帮助你,也希望你能解决这个问题。

最新更新