日期:2014-05-17  浏览次数:20430 次

c#asp.net的listview分页问题
我最近自己研究的好玩,做个公司网站,遇到listview分页问题。是在ActList.aspx里显示列表,我用的显示控件是listview,数据源是ObjectDataSource1,设计如下:
T_Act表放的是最新活动内容,表字段id, title, ActContent, Author, Province, City, ActTime
单纯的高效分页我会,在强类型dataset里的T_ActTableAdapter建立2个查询,QueryCount()和GetPagedData(startRowIndex,maximumRows)。
QueryCount()的语句为SELECT COUNT(*) FROM T_Act。用来查询总条数。
GetPagedData(startRowIndex,maximumRows)。用来查询分页的数据,的语句为:
select * from
(
SELECT id, title, ActContent, Author, Province, City, ActTime ,Row_number() over(order by AcTtime desc) as Rcount FROM dbo.T_Act 
)T
where T.Rcount>@startRowIndex and T.Rcount<=@startRowIndex+@maximumRows
这样可以在ActList.aspx里能正确分页。
现在我想根据Province(省)字段按照省来查询,而上面的是查询所有省的数据。
我试过在上面的子查询里加个条件where Province=@province,代码变成这样:
select * from
(
SELECT id, title, ActContent, Author, Province, City, ActTime ,Row_number() over(order by AcTtime desc) as Rcount FROM dbo.T_Act 
where Province=@province
)T
where T.Rcount>@startRowIndex and T.Rcount<=@startRowIndex+@maximumRows
最后生成解决方案后不能运行,错误:必须声明标量变量 "@province"。 

求兄弟帮忙解决。感谢!






------最佳解决方案--------------------
嗯,声明参考:http://guobaoguo.blog.163.com/blog/static/109162582007812104913424/


------其他解决方案--------------------
@province你参数化查询,要输入参数值和参数啊
StringBuilder strSql = new StringBuilder();
            strSql.Append("select  top 1 ID,Title,Text,Form,Time from News ");
            strSql.Append(" where ID=@ID");
            SqlParameter[] parameters = {
new SqlParameter("@ID", SqlDbType.Int,4)
};
            parameters[0].Value = id;
------其他解决方案--------------------
2楼的意思是 我必须为@province赋值才能?比如where Province='hubei',是这样吗?这样就定死了,我想在外部通过session来传@province的值?怎么做到?
------其他解决方案--------------------
@startRowIndex这是什么,你怎么能用在linq中,你都不知道@是干嘛的,那是在sql语句中参数化用的,不是当做变量用的
------其他解决方案--------------------
引用:
@startRowIndex这是什么,你怎么能用在linq中,你都不知道@是干嘛的,那是在sql语句中参数化用的,不是当做变量用的

@startRowIndex是ObjectDataSource和DataPager配合分页用的参数
------其他解决方案--------------------
自己顶上去,求帮助。
------其他解决方案--------------------
引用:
自己顶上去,求帮助。

仔细检查一下 @province 是不是忘记赋值了

你把代码帖全嘛
尤其是传递参数那部分, @startRowIndex @startRowIndex
@maximumRows

------其他解决方案--------------------
引用:
引用:自己顶上去,求帮助。
仔细检查一下 @province 是不是忘记赋值了

你把代码帖全嘛
尤其是传递参数那部分, @startRowIndex @startRowIndex
@maximumRows

我没给@province赋值,我就是想怎么才能在@province赋值?
T.Rcount>@startRowIndex and T.Rcount<=@startRowIndex+@maximumRows这是配合DataPager使用的,DataPager内部有着2个属性。