当前位置:编程学习 > C#/ASP.NET >>

Gridview中如何对IP地址列排序

IP地址以字符型存储,直接使用Gridview中的排序功能会得到错误结果.如10.12.3.8会排在10.2.3.5的前面. --------------------编程问答-------------------- 哪在sql里面写吧!

--------------------编程问答-------------------- 通过SQL SERVER存储过程实现IP地址排序网上有例子,也实验成功了.但是直接用到Gridview中还是不会. --------------------编程问答-------------------- 你的数据已经查好了,直接绑定不行吗? --------------------编程问答-------------------- 但是还有别的条件要排序的,不是在Gridview中只有一种排序方式. 我是想在需要的时候点击IP地址列实现IP地址的排序,也可以按需要点击别的列实现别的排序方式. --------------------编程问答-------------------- Ip地址转long
CREATE   FUNCTION   f_IP2Int(   
  @ip   char(15)   
  )RETURNS   bigint   
  AS   
  BEGIN   
  DECLARE   @re   bigint   
  SET   @re=0   
  SELECT   @re=@re+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID   
  ,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')   
  FROM(   
  SELECT   ID=CAST(16777216   as   bigint)   
  UNION   ALL   SELECT   65536   
  UNION   ALL   SELECT   256   
  UNION   ALL   SELECT   1)A   
  RETURN(@re)   
  END

public static uint IPToInt(string ipAddress)
  {
  string disjunctiveStr = ".,: ";
  char[] delimiter = disjunctiveStr.ToCharArray();
  string[] startIP = null;
  for (int i = 1; i <= 5; i++)
  {
  startIP = ipAddress.Split(delimiter, i);
  }
  string a1 = startIP[0].ToString();
  string a2 = startIP[1].ToString();
  string a3 = startIP[2].ToString();
  string a4 = startIP[3].ToString();
  uint U1 = uint.Parse(a1);
  uint U2 = uint.Parse(a2);
  uint U3 = uint.Parse(a3);
  uint U4 = uint.Parse(a4);

  uint U = U1 << 24;
  U += U2 << 16;
  U += U3 << 8;
  U += U4;
  return U;
  } --------------------编程问答-------------------- 以上代码是用于从SQL进行排序而非从Gridview中进行排序. --------------------编程问答-------------------- mkygukmuykmnmhjm
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,