您的位置:首页 > 编程语言 > ASP

在ASP.Net With C# 中使用 DataGrid 控件分页展示数据

2006-04-21 14:25 951 查看
在ASP.Net With C# 中使用 DataGrid 控件分页展示数据。

问题一:自动显示 当前页数和总页数

也曾经看到能实现相关功能的代码,但是是使用 Visual Studio.NET 开发环境开发的,代码很长,我的能力低看不懂,所以就自己琢磨了一个:

得到当前页数并显示数据

void BindGrid()
{
SqlConnection Conn;
Conn = new SqlConnection("连接数据库");
String strSQL = "SELECT * FROM 表名 WHERE 条件 ";
SqlCommand Comm = new SqlCommand(strSQL,Conn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = Comm;
DataSet ds = new DataSet();
Conn.Open();
da.Fill(ds,"字段");
dg.DataSource = ds.Tables["字段"].DefaultView;
dg.DataBind();
Conn.Close();
//因为是从第零页开始的,为了符合习惯所以加1
page= dg.CurrentPageIndex+1;
ttpage();
Label1.Text="第"+page.ToString()+"页"+ " 共"+tpage.ToString()+"页";
}

void ttpage()
{
//显示总页数,每页10条记录
string SQL = "SELECT count(*) as one FROM 表名 WHERE 条件 ";
SqlConnection Conn;
Conn = 连接字符串
Conn.Open();
SqlCommand Comm = new SqlCommand(SQL,Conn);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = Comm;
SqlDataReader dr=Comm.ExecuteReader();
if(dr.Read())
{
string x=dr["one"].ToString();
//得到总记录数
shu=Convert.ToInt32(x);
}
Conn.Close();

//如果能被整除
if ((shu%10)==0)
{
//总页数
tpage=shu/10;
}
else
{
//不满一页的算一页
tpage=shu/10+1;
}
}

问题2:用 DataGrid进行分页处理后,删除最后一行数据发生错误

原因:函数找不到当前页的索引,因为当前页已经不存在

解决办法:

//如果当前索引大于0
if (dg.CurrentPageIndex > 0)
{
//得到当前最大记录数shu
//代码略*****************************************

//如果记录数能被整除,说明当前索引页已经不存在,减一得到前一页索引,显示上一页内容
if ((shu%10)==0)
{
dg.CurrentPageIndex -=1;}
//显示数据
BindGrid();
}
else
{
BindGrid();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: