asp.net分页功能的实现
效果图:

代码:
static int PageSize = 30; #region 分页部分代码
//*********************************** 数据分页 ********************************
protected void FirstPage_Click1(object sender, EventArgs e)
{
int RecordCount = GetRecordCount(ViewState["ssearchCondition"].ToString()); //获取记录条数
DataTable dt = GetListByPage(ViewState["ssearchCondition"].ToString(),,PageSize);
int PageCount = RecordCount % PageSize > ? RecordCount / PageSize + : RecordCount / PageSize;
int CurrentPageNum;
if (PageCount == )
{
CurrentPageNum = ;
}
else
{
CurrentPageNum = ;
}
CurrentPage.Text = (CurrentPageNum).ToString();
TotalPageCount.Text = PageCount.ToString();
EnableJudger(); ViewState["PageCount"] = PageCount;
ViewState["CurrentPageNum"] = CurrentPageNum; int rowNum = ;
if (int.Parse(ViewState["PageCount"].ToString()) > )
{
rowNum += (int.Parse(ViewState["CurrentPageNum"].ToString()) - ) * PageSize;
}
dt.Columns.Add(new DataColumn("rowN"));
for (int i = ; i < dt.Rows.Count; i++)
{
dt.Rows[i]["rowN"] = rowNum++;
} Repeater1.DataSource = dt;
Repeater1.DataBind();
} protected void PrePage_Click(object sender, EventArgs e)
{
int RecordCount = GetRecordCount(ViewState["ssearchCondition"].ToString()); //获取记录条数
int PageCount = RecordCount % PageSize > ? RecordCount / PageSize + : RecordCount / PageSize;
int CurrentPageNum = (int)ViewState["CurrentPageNum"];
DataTable dt = GetListByPage(ViewState["ssearchCondition"].ToString(), PageSize * (CurrentPageNum - ) + , PageSize * (CurrentPageNum - ) + PageSize);
CurrentPageNum -= ;
CurrentPage.Text = (CurrentPageNum).ToString();
TotalPageCount.Text = PageCount.ToString();
EnableJudger(); ViewState["PageCount"] = PageCount;
ViewState["CurrentPageNum"] = CurrentPageNum; int rowNum = ;
if (int.Parse(ViewState["PageCount"].ToString()) > )
{
rowNum += (int.Parse(ViewState["CurrentPageNum"].ToString()) - ) * PageSize;
}
dt.Columns.Add(new DataColumn("rowN"));
for (int i = ; i < dt.Rows.Count; i++)
{
dt.Rows[i]["rowN"] = rowNum++;
} Repeater1.DataSource = dt;
Repeater1.DataBind();
} protected void NextPage_Click(object sender, EventArgs e)
{
int RecordCount = GetRecordCount(ViewState["ssearchCondition"].ToString()); //获取记录条数
int PageCount = RecordCount % PageSize > ? RecordCount / PageSize + : RecordCount / PageSize;
int CurrentPageNum = (int)ViewState["CurrentPageNum"];
DataTable dt = GetListByPage(ViewState["ssearchCondition"].ToString(), PageSize * (CurrentPageNum) + , PageSize * (CurrentPageNum) + PageSize);
CurrentPageNum += ;
CurrentPage.Text = (CurrentPageNum).ToString();
TotalPageCount.Text = PageCount.ToString();
EnableJudger(); ViewState["PageCount"] = PageCount;
ViewState["CurrentPageNum"] = CurrentPageNum; int rowNum = ;
if (int.Parse(ViewState["PageCount"].ToString()) > )
{
rowNum += (int.Parse(ViewState["CurrentPageNum"].ToString()) - ) * PageSize;
}
dt.Columns.Add(new DataColumn("rowN"));
for (int i = ; i < dt.Rows.Count; i++)
{
dt.Rows[i]["rowN"] = rowNum++;
} Repeater1.DataSource = dt;
Repeater1.DataBind();
} protected void LastPage_Click(object sender, EventArgs e)
{
int RecordCount = GetRecordCount(ViewState["ssearchCondition"].ToString()); //获取记录条数
int PageCount = RecordCount % PageSize > ? RecordCount / PageSize + : RecordCount / PageSize; DataTable dt = GetListByPage(ViewState["ssearchCondition"].ToString(), PageSize * (PageCount - ) + , PageSize * (PageCount - ) + PageSize);
int CurrentPageNum = PageCount;
CurrentPage.Text = PageCount.ToString();
TotalPageCount.Text = PageCount.ToString();
EnableJudger(); ViewState["PageCount"] = PageCount;
ViewState["CurrentPageNum"] = CurrentPageNum; int rowNum = ;
if (int.Parse(ViewState["PageCount"].ToString()) > )
{
rowNum += (int.Parse(ViewState["CurrentPageNum"].ToString()) - ) * PageSize;
}
dt.Columns.Add(new DataColumn("rowN"));
for (int i = ; i < dt.Rows.Count; i++)
{
dt.Rows[i]["rowN"] = rowNum++;
} Repeater1.DataSource = dt;
Repeater1.DataBind();
} protected void lbtnGoPage_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtGoPage.Text))
{
return;
}
int gotoPageNum = int.Parse(txtGoPage.Text);
int RecordCount = GetRecordCount(ViewState["ssearchCondition"].ToString()); //获取记录条数
DataTable dt = new DataTable();
int CurrentPageNum = gotoPageNum;
int PageCount = RecordCount % PageSize > ? RecordCount / PageSize + : RecordCount / PageSize;
if (gotoPageNum < || gotoPageNum > PageCount)
{
}
else
{
dt = GetListByPage(ViewState["ssearchCondition"].ToString(), PageSize * (CurrentPageNum - ) + , PageSize * (CurrentPageNum - ) + PageSize);
CurrentPage.Text = (gotoPageNum).ToString();
TotalPageCount.Text = PageCount.ToString();
EnableJudger(); ViewState["PageCount"] = PageCount;
ViewState["CurrentPageNum"] = CurrentPageNum; int rowNum = ;
if (int.Parse(ViewState["PageCount"].ToString()) > )
{
rowNum += (int.Parse(ViewState["CurrentPageNum"].ToString()) - ) * PageSize;
}
dt.Columns.Add(new DataColumn("rowN"));
for (int i = ; i < dt.Rows.Count; i++)
{
dt.Rows[i]["rowN"] = rowNum++;
} Repeater1.DataSource = dt;
Repeater1.DataBind();
}
}
private void EnableJudger()
{
//1. 没有数据
if (int.Parse(TotalPageCount.Text) <= )
{
FirstPage.Enabled = false;
PrePage.Enabled = false;
NextPage.Enabled = false;
LastPage.Enabled = false;
lbtnGoPage.Enabled = false;
CurrentPage.Text = "";
return;
}
//2. 只有一页数据
if (int.Parse(CurrentPage.Text) == && int.Parse(TotalPageCount.Text) == )
{
FirstPage.Enabled = false;
PrePage.Enabled = false;
NextPage.Enabled = false;
LastPage.Enabled = false;
lbtnGoPage.Enabled = false;
return;
}
//3. 当前为第一页,总页数大于1
if (int.Parse(CurrentPage.Text) == && int.Parse(TotalPageCount.Text) > )
{
FirstPage.Enabled = false;
PrePage.Enabled = false;
NextPage.Enabled = true;
LastPage.Enabled = true;
lbtnGoPage.Enabled = true;
return;
}
//4. 当前页为中间页
if (int.Parse(CurrentPage.Text) > && int.Parse(CurrentPage.Text) < int.Parse(TotalPageCount.Text))
{
FirstPage.Enabled = true;
PrePage.Enabled = true;
NextPage.Enabled = true;
LastPage.Enabled = true;
lbtnGoPage.Enabled = true;
return;
}
//5.当前页为最后一页,总页数大于1
if (int.Parse(CurrentPage.Text) == int.Parse(TotalPageCount.Text) && int.Parse(CurrentPage.Text) > )
{
FirstPage.Enabled = true;
PrePage.Enabled = true;
NextPage.Enabled = false;
LastPage.Enabled = false;
return;
} } /// <summary>
/// 获取记录总数
/// </summary>
public int GetRecordCount(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) from tb_ProjectRegister");
if (strWhere.Trim() != "")
{
strSql.Append(" where " + strWhere);
}
object obj = GetSingle(strSql.ToString());
if (obj == null)
{
return ;
}
else
{
return Convert.ToInt32(obj);
}
}
public static object GetSingle(string SQLString)
{
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NMXT_DBConn"].ToString()))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}
/// <summary>
/// 分页获取数据列表
/// </summary>
public DataTable GetListByPage(string strWhere, int startIndex, int endIndex)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
strSql.Append("order by T.roleId asc,T.replyEnd desc");
strSql.Append(")AS Row, T.* from tb_ProjectRegister T ");
if (!string.IsNullOrEmpty(strWhere.Trim()))
{
strSql.Append(" WHERE " + strWhere);
}
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
DataSet ds = Query(strSql.ToString()); DataTable newDt = ds.Tables[].Copy();
DataColumn newCol1 = new DataColumn("Description");
DataColumn newCol2 = new DataColumn("newCol2");
DataColumn newCol3 = new DataColumn("newCol3");
DataColumn newCol4 = new DataColumn("newCol4");
DataColumn newCol5 = new DataColumn("newCol5");
DataColumn newCol6 = new DataColumn("newCol6");
DataColumn newCol7 = new DataColumn("newCol7");
DataColumn newCol8 = new DataColumn("newCol8");
newDt.Columns.Add(newCol1);
newDt.Columns.Add(newCol2);
newDt.Columns.Add(newCol3);
newDt.Columns.Add(newCol4);
newDt.Columns.Add(newCol5);
newDt.Columns.Add(newCol6);
newDt.Columns.Add(newCol7);
newDt.Columns.Add(newCol8);
Dictionary<string, string> newDic = GetRoleDescriptions();
if (newDic == null)
{
foreach (DataRow row in newDt.Rows)
{
row["Description"] = ""; if (Convert.ToDateTime(row["applyStart"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol2"] = "";
}
else
{
row["newCol2"] = Convert.ToDateTime(row["applyStart"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["applyEnd"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol3"] = "";
}
else
{
row["newCol3"] = Convert.ToDateTime(row["applyEnd"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["replyStart"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol4"] = "";
}
else
{
row["newCol4"] = Convert.ToDateTime(row["replyStart"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["replyEnd"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol5"] = "";
}
else
{
row["newCol5"] = Convert.ToDateTime(row["replyEnd"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["realEnd"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol6"] = "";
}
else
{
row["newCol6"] = Convert.ToDateTime(row["realEnd"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["acceptDate_zdb"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol7"] = "";
}
else
{
row["newCol7"] = Convert.ToDateTime(row["acceptDate_zdb"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["acceptDate_zjb"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol8"] = "";
}
else
{
row["newCol8"] = Convert.ToDateTime(row["acceptDate_zjb"]).ToString("yyyy-MM-dd");
}
}
}
else
{
foreach (DataRow row in newDt.Rows)
{
if (newDic.ContainsKey(row["roleId"].ToString()))
{
row["Description"] = newDic[row["roleId"].ToString()];
}
else
{
row["Description"] = "";
} if (Convert.ToDateTime(row["applyStart"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol2"] = "";
}
else
{
row["newCol2"] = Convert.ToDateTime(row["applyStart"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["applyEnd"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol3"] = "";
}
else
{
row["newCol3"] = Convert.ToDateTime(row["applyEnd"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["replyStart"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol4"] = "";
}
else
{
row["newCol4"] = Convert.ToDateTime(row["replyStart"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["replyEnd"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol5"] = "";
}
else
{
row["newCol5"] = Convert.ToDateTime(row["replyEnd"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["realEnd"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol6"] = "";
}
else
{
row["newCol6"] = Convert.ToDateTime(row["realEnd"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["acceptDate_zdb"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol7"] = "";
}
else
{
row["newCol7"] = Convert.ToDateTime(row["acceptDate_zdb"]).ToString("yyyy-MM-dd");
} if (Convert.ToDateTime(row["acceptDate_zjb"]).ToString("yyyy-MM-dd") == "1900-01-01")
{
row["newCol8"] = "";
}
else
{
row["newCol8"] = Convert.ToDateTime(row["acceptDate_zjb"]).ToString("yyyy-MM-dd");
}
}
}
return newDt;
} public static DataSet Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NMXT_DBConn"].ToString()))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
///********************************* 数据分页结束 ********************************
#endregion
asp.net分页功能的实现的更多相关文章
- ASP.NET--Repeater控件分页功能实现
这两天由于‘销售渠道’系统需要实现新功能,开发了三个页面,三个界面功能大致相同. 功能:分页显示特定sql查询结果,点击上一页下一页均可显示.单击某记录可以选定修改某特定字段<DropDownL ...
- Asp.net MVC3表格共用分页功能
在建立的mvc3项目中,在Razor(CSHTML)视图引擎下,数据会在表格中自动的生成,但分页没有好的控件实现,这里我们开发了设计了一个分页的模板,适合于没有数据提交和有数据提交的分页的分页. 第一 ...
- jPList – 实现灵活排序和分页功能的 jQuery 插件
jPList 是一个灵活的 jQuery 插件,可以用于任何 HTML 结构的排序,分页和筛选.它支持的数据源包括:PHP + MySQL,ASP.NET + SQL Server,PHP + SQL ...
- asp.net 分页-自己写分页控件
去年就发表过asp.net 分页-利用后台直接生成html分页 ,那种方法只是单纯的实现了分页,基本不能使用,那时就想写个自己的分页控件,无奈能力有限.最近有点时间了,就自己做出了这个分页控件.我承认 ...
- GridView使用自带分页功能时分页方式及样式PagerStyle
// 转向地址:http://www.bubuko.com/infodetail-412562.html GridView分页,使用自带分页功能,类似下面样式: 在aspx页面中,GridView上的 ...
- Repeater控件使用(含删除,分页功能)
Repeater控件使用(含删除,分页功能) 摘自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html 前臺代碼 <%@ ...
- 《ASP.NET1200例》<asp:DataList>分页显示图片
aspx页面代码 <asp:DataList ID="dlPhoto" runat="server" Height="137px" W ...
- aspnetpager+repeater+oracle实现分页功能
一.设计原理阐述 数据查询分页,这个功能相信大家都很熟悉,通过数据库或其它数据源进行查询操作后,将获得的数据显示到界面上,但是由于数据量太大,不能一次性完全的显示出来,就有了数据分页的需求.这个需求在 ...
- ASP.NET分页存储过程,解决搜索时丢失条件信息
存储过程: -- ============================================= -- Author: -- Create date: -- Description: 分页 ...
随机推荐
- Unity3D在WebPlayer模式下的异常上报探索
原地址:http://www.cnblogs.com/hisiqi/archive/2013/07/21/3203527.html 我们知道,Unity3D在WebPlayer的发布模式下是沙箱环境中 ...
- JS动态插入HTML后不能执行后续JQUERY操作
通过js追加的html 发现 不能点击 执行函数 普通绑定事件:$('.btn1').click(function(){}绑定 事件委托 解决方法: $("body").d ...
- MySQL错误Another MySQL daemon already running with the same unix socket.v
etc/init.d/mysqld start 结果显示 Another MySQL daemon already running with the same unix socket.显示另一个MyS ...
- IOS Exception2 this class is not key value coding-compliant for the key Click
2015-06-16 23:00:53.706 MyIOSPackage[823:280049] *** Terminating app due to uncaught exception 'NSUn ...
- (六)Oracle学习笔记—— 约束
1. 约束介绍 表虽然建立完成了,但是表中的数据是否合法并不能有所检查,而如果要想针对于表中的数据做一些过滤的话,则可以通过约束完成,约束的主要功能是保证表中的数据合法性. 按照约束的分类,一共有五种 ...
- 远程调用——hessian使用入门
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议,因为采用的是二进制协 ...
- Android Studio+SVN配置生成apk文件
Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发 ...
- 利用pandas进行数据分析之三:DataFrame与Series基本功能
未经同意请勿转载http://www.cnblogs.com/smallcrystal/ 前文已经详细介绍DataFrame与Series两种数据结构,下面介绍DataFrame与Series的数据基 ...
- ibatis中<![CDATA[使用解释
http://hi.baidu.com/taoxincheng0/blog/item/3916c4ec413f03c22e2e2160.html ibatis中什么时候需要用到: <![CDAT ...
- 获取表数据的插入SQL
DECLARE @TABLE_NAME VARCHAR(200) SET @TABLE_NAME = 'myFunction' --表名 DECLARE @TABLE_CONDITION VARCHA ...