在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();
}