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