首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

数据分页,一个很奇怪的现象解决办法

2012-04-24 
数据分页,一个很奇怪的现象部分代码:C# codestring strpagenum context.Request[pagenum]int ipagenu

数据分页,一个很奇怪的现象
部分代码:

C# code
                       string strpagenum = context.Request["pagenum"];                int ipagenum = Convert.ToInt32(strpagenum);                using (SqlConnection conn = new SqlConnection(@"Data Source=123-PC\SQL2005;Initial Catalog=ZJJ;User ID=sa"))                {                    conn.Open();                    using(SqlCommand cmd=conn.CreateCommand())                    {                        cmd.CommandText = "select * from(select id,title,price,imgurl,Row_Number() over(order by id) as rownum from  tb_products)a where a.rownum>=" + ((ipagenum - 1) * 15) + 1 + "and rownum<=" + ipagenum * 15 + " ";                        DataSet ds = new DataSet();                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);                        adapter.Fill(ds);                        DataTable table = ds.Tables[0];                        int count = table.Rows.Count;


注:tb_products表有30行数据

断点调试后发现
strpagenum 为 1 的时候 正常 count=15 
strpagenum 为 2 count 查不出任何数据 count=0

用SQL SERVER 测试

SQL code
select * from(select id,title,price,imgurl,Row_Number() over(order by id) as rownum from  tb_products)a where a.rownum>= ((1 - 1) * 15) + 1 and rownum<=1 * 15select * from(select id,title,price,imgurl,Row_Number() over(order by id) as rownum from  tb_products)a where a.rownum>= ((2 - 1) * 15) + 1 and rownum<=2 * 15


数据正常

第一页正常,数据都加载出来了,第二页就不OK了,这很奇怪。


[解决办法]
探讨

我试了一下你的sql语句
int ipagenum = 1;
select * from(select id,title,price,imgurl,Row_Number() over(order by id) as rn from tb_products)a where a.rn>=01and a.rn<=15

int ipagenum = 2;
select * from……

[解决办法]
将你原来的字符串改一下,你之前那个没有把ipagenum 的计算结果转为字符串,成了字符串拼接了
改成如下
C# code
"select * from(select id,title,price,imgurl,Row_Number() over(order by id) as rownum from  tb_products)a where a.rownum>=" + (((ipagenum - 1) * 15) + 1).ToString() + " and rownum<=" + (ipagenum * 15).ToString() + " "; 

热点排行