大家用DataList是怎样各列排序的
我是这样做的,
存储过程用的是以前一位高手写的通用的分页存储过程
该存储过程的输入参数是这样的
CREATE PROCEDURE sp_page
@tb varchar(50), --表名
@col varchar(50), --按该列来进行分页
@coltype int, --@col列的类型,0-数字类型,1-字符类型,2-日期时间类型
@orderby bit, --排序,0-顺序,1-倒序
@collist varchar(800),--要查询出的字段列表,*表示全部字段
@pagesize int, --每页记录数
@page int, --指定页
@condition varchar(800),--查询条件
AS
.............存储过程以下部分省略
我在DataList里的各列列名是LinkButton型的
点击一列名对该列排序然后DataList数据重新邦定
我用ViewState保存列名,列的类型,排序,和指定页
这是其中的一列处理函数
//点击会员名排序时处理的事件
public void Name_OnClick(object sender,System.EventArgs e)
{
if((string)ViewState["Col"]=="UserName")//如果先前是在会员名列上排序的,则调换排序
{
if((int)ViewState["Flag"]==0)//若先前在会员名列上是按顺序排的
{
ViewState["Flag"] = 1; //则从顺序换成倒序
}
else
{
ViewState["Flage"] = 0; //否则从倒序换成顺序
}
}
else //否则从其他列排序换成会员列排序
{
ViewState["Col"] = "UserName";//把列名换成UserName
ViewState["ColType"] = 1; //列的类型,0-数字类型,1-字符类型,2-日期时间类型
ViewState["Flag"] = 0; //排序,0-顺序,1-倒序
}
ViewState["CurrentPage"] = 1; //第一页
DataBind((int)ViewState["CurrentPage"],(string)ViewState["Col"],(int)ViewState["ColType"],(int)ViewState["Flag"]); //给Datalist邦定数据
}
这样做有个问题,就是在一列中连点三次后排序就不变换了,换点其它列又可以,但同样连点三次后又不变了,每一列都是这样
这是什么原因呢
你们是怎么做DataList中排序的呢