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: 分页 ...
随机推荐
- 解决C#使用Microsoft.Office.Interop.Excel操作Excel后进程一直存在的问题
This resolved the issue for me. Your code becomes: public Excel.Application excelApp = new Excel.App ...
- javascript 和 jquery 博客
http://www.cnblogs.com/starof/category/626164.html
- JAVA自带监控工具的介绍
转:http://www.alidw.com/?p=326 相信部分同学可能还是不太了解或者很少使用,这些监控工具是jdk5.0以上才会有的,有部分是liunx特有的. 了解这些工具再做压力测试和调优 ...
- HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)
题目地址:pid=5407">HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少. 思路:首先做这道 ...
- 【MyBatis学习02】走进MyBatis的世界
mybatis是个持久层的框架,用来执行数据库操作的,无外乎增删改查,上一节对mybatis有了宏观上的了解后,这一篇博客主要通过一个小示例来入门mybatis,先看一下要写的示例需求: 根据用户id ...
- 趣味 console.log
第三方趣味console,比我的强太多了,使用这个吧: https://github.com/yy0608/console 我的console效果图: ;(function (global, fact ...
- Atitit.aticmd v4 新特性q39 添加定时器释放功能
Atitit.aticmd v4 新特性q39 添加定时器释放功能 V1 实现兰cmd V2 标准输入,标准输出,标准错误与重新定向 V3 stdout stderr统一重新定向 V4 添加定 ...
- HttpClient如何 关闭连接(转)
ava代码 HttpClient client = new HttpClient(); HttpMethod method = new GetMethod("http://www.apach ...
- openresty+lua在反向代理服务中的玩法
openresty+lua在反向代理服务中的玩法 phith0n · 2015/06/02 10:35 0x01 起因 几天前学弟给我介绍他用nginx搭建的反代,代理了谷歌和维基百科. 由此我想到了 ...
- 转:c++里关于cerr,clog,cout三者的区别
c++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容立即被输出 clog(缓冲标准错误)--------有缓冲,缓冲区满时输出 cout- ...