完整的ASP.NET存储过程分页,排序,鼠标移至变色
首先建立一个存储过程如下(MySQL数据库):
CREATE DEFINER=`root`@`localhost` PROCEDURE `pagination`(
in tbName varchar(100), /*表名*/
fldName varchar(100), /*排序关键字*/
pageSize int, /*每页显示行数*/
pageIndex int, /*当前显示第几页*/
orderType int, /*排序规则 0升序,1降序*/
strWhere varchar(2000),/*查询条件 例如where 1=1*/
out allPages int /*传出参数 返回总行数*/
)
begin
declare beginRow int;
declare sqlStr varchar(1000);
declare limitTemp varchar(1000);
declare orderTemp varchar(1000);
declare allPageNum int;
set allPageNum = 0;
set beginRow = (pageIndex-1)*pageSize;
set sqlStr = CONCAT('SELECT * from ',tbName);
set limitTemp = CONCAT(' limit ',beginRow,',',pageSize);
set orderTemp = CONCAT(' order by ',fldName);
if orderType = 0 then
set orderTemp = CONCAT(orderTemp,' ASC ');
else
set orderTemp = CONCAT(orderTemp,' DESC ');
end if;
set @sqlSelect = CONCAT(sqlStr,' ',strWhere,orderTemp,limitTemp);
set @sqlCountRow = CONCAT('select count(*) into @countRow from ',tbName);
prepare sqlstmt from @sqlSelect;
execute sqlstmt;
deallocate prepare sqlstmt;
prepare sqlstmt from @sqlCountRow;
EXECUTE sqlstmt;
set allPages = @countRow;
deallocate prepare sqlstmt;
end;
建立一个排序类
using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace TestMySQL
{
public class Procedure
{
public Procedure()
{
}
/// <summary>
/// 根据条件查询,返回一页记录
/// </summary>
/// <param name="tbName">要查询的表名 多个表之间用","分隔</param>
/// <param name="fldName">排序关键字段</param>
/// <param name="pageSize">每页显示行数</param>
/// <param name="pageIndex">显示第几页</param>
/// <param name="orderType">排序规则 0为升序,1为降序</param>
/// <param name="strWhere">查询条件 例如"where 1=1'</param>
/// <param name="allNum">返回总行数</param>
/// <returns>一页的记录</returns>
public static DataTable Query(string tbName,string fldName,int pageSize,int pageIndex,int orderType,string strWhere,out int allNum)
{
// MySqlConnection con = DB.CreateCon();
MySqlConnection con = new MySqlConnection("server=localhost; database=testprocedure; user id=root; password=123456");
MySqlCommand mySqlCmd = new MySqlCommand();
mySqlCmd.Connection = con;
mySqlCmd.CommandText = "pagination";
mySqlCmd.CommandType = CommandType.StoredProcedure;
//添加参数列表
mySqlCmd.Parameters.Add(new MySqlParameter("tbName",MySql.Data.MySqlClient.MySqlDbType.VarChar));
mySqlCmd.Parameters["tbName"].Value = tbName;
mySqlCmd.Parameters.Add(new MySqlParameter("fldName",MySql.Data.MySqlClient.MySqlDbType.VarChar));
mySqlCmd.Parameters["fldName"].Value = fldName;
mySqlCmd.Parameters.Add(new MySqlParameter("pageSize",MySql.Data.MySqlClient.MySqlDbType.Int32));
mySqlCmd.Parameters["pageSize"].Value = pageSize;
mySqlCmd.Parameters.Add(new MySqlParameter("pageIndex",MySql.Data.MySqlClient.MySqlDbType.Int32));
mySqlCmd.Parameters["pageIndex"].Value = pageIndex;
mySqlCmd.Parameters.Add(new MySqlParameter("orderType",MySql.Data.MySqlClient.MySqlDbType.Int32));
mySqlCmd.Parameters["orderType"].Value = orderType;
mySqlCmd.Parameters.Add(new MySqlParameter("strWhere",MySql.Data.MySqlClient.MySqlDbType.VarChar));
mySqlCmd.Parameters["strWhere"].Value = strWhere;
mySqlCmd.Parameters.Add(new MySqlParameter("allPages",MySql.Data.MySqlClient.MySqlDbType.Int32));
// mySqlCmd.Parameters["@allNum"].Value = allNum;
mySqlCmd.Parameters["allPages"].Direction = ParameterDirection.Output;
MySqlDataAdapter msda = new MySqlDataAdapter(mySqlCmd);
DataSet ds = new DataSet();
msda.Fill(ds,"temp");
allNum = Convert.ToInt32(mySqlCmd.Parameters["allPages"].Value);
return ds.Tables["temp"];
}
}
}
使用排序类
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace TestMySQL
{
public class WebForm3 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private string tbName = "table1";//表名
private string sortKey = "id";//排序关键字
private int pageSize = 20;//每页显示行数
private int CurrentPageIndex = 1;//当前页数
private int sortRule = 0;//排序规则 0升,1降
private string selectCondition = "where 1=1";//查询条件
private int countRow;//返回的总行数
private int countPage;//总页数
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
this.BingDataGird();
}
}
private void BingDataGird()
{
//排序关键字段 首次加载是按id排
if(ViewState["sortKey"] == null)
{
ViewState["sortKey"] = "id";
}
sortKey = (string)ViewState["sortKey"];
//排序规则 0为升序,1为降序,首次加载时按升序
if(ViewState["sortRule"] == null)
{
ViewState["sortRule"] = 0;
}
sortRule = (int)ViewState["sortRule"];
this.DataGrid1.PageSize = pageSize;//DataGird默认的每页显示行数等于自己设定的每页显示行数
CurrentPageIndex = this.DataGrid1.CurrentPageIndex + 1;
DataTable dt = Procedure.Query(tbName,sortKey,pageSize,CurrentPageIndex,sortRule,selectCondition,out countRow);
this.DataGrid1.VirtualItemCount = countRow;
this.DataGrid1.DataSource = dt;
this.DataGrid1.DataBind();
//计算总页数
if(countRow%pageSize == 0)
{
countPage = countRow/pageSize;
}
else
{
countPage = countRow/pageSize +1;
}
Response.Write("总记录数为:"+countRow+"<br>"
+"总页数为:"+countPage+"<br>"
+"当前页数:"+CurrentPageIndex);
}
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
this.BingDataGird();
}
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
//设定双向排序
if(ViewState["sortRule"] == null)
{
ViewState["sortRule"] = 0;
}
else
{
if( (int)ViewState["sortRule"] == 0)
{
ViewState["sortRule"] = 1;
}
else
{
ViewState["sortRule"] = 0;
}
}
sortRule = (int)ViewState["sortRule"];//排序规则
this.DataGrid1.CurrentPageIndex = 0;//每次点击关键字排序时返回第一页
ViewState["sortKey"] = e.SortExpression;//排序关键字
sortKey = (string)ViewState["sortKey"];
this.DataGrid1.PageSize = pageSize;//DataGird默认的每页显示行数等于自己设定的每页显示行数
CurrentPageIndex = this.DataGrid1.CurrentPageIndex + 1;
DataTable dt = Procedure.Query(tbName,sortKey,pageSize,CurrentPageIndex,sortRule,selectCondition,out countRow);
this.DataGrid1.VirtualItemCount = countRow;
this.DataGrid1.DataSource = dt;
this.DataGrid1.DataBind();
//计算总页数
if(countRow%pageSize == 0)
{
countPage = countRow/pageSize;
}
else
{
countPage = countRow/pageSize +1;
}
Response.Write("总记录数为:"+countRow+"<br>"
+"总页数为:"+countPage+"<br>"
+"当前页数:"+CurrentPageIndex);
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item||e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onmouseover","c=this.style.backgroundColor,this.style.backgroundColor='#fff111'");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=c");
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.DataGrid1.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid1_SortCommand);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
完整的ASP.NET存储过程分页,排序,鼠标移至变色的更多相关文章
- asp.net存储过程分页+GridView控件 几百万数据 超快
存储过程:---亲测275万数据,分页速度N快 ))+' '+@orderid+' from '+@tablename+' '+@tmpOrderid set @sql='select top'+st ...
- asp.net利用存储过程分页代码
-最通用的分页存储过程 -- 获取指定页的数据 CREATE PROCEDURE Pagination ), -- 表名 ) = '*', -- 需要返回的列 )='', -- 排序的字段名 , -- ...
- ASP调用存储过程访问SQL Server
ASP调用存储过程访问SQL Server 2011-02-15 10:22:57 标签:asp 数据库 sQL 存储过程 Server ASP和存储过程(Stored Procedures)的文章 ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...
- 存储过程分页 Ado.Net分页 EF分页 满足90%以上
存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...
- MS SQLSERVER通用存储过程分页
最近在面试的时候,遇到个奇葩的秃顶老头面试官. 问:写过存储过程分页吗? 答:没写过,但是我知道分页存储的原理,我自己也写过,只是在工作中没写过. 问:那你这么多年工作中就没写过吗? 答:的确没写过, ...
- 【原创】10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程)
有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: 技术:Mvc4+Dapper+Dapper扩展+Sqlserver 目前主要实现 ...
- ligerUI---ligerGrid分页排序的使用(从后台获取数据显示)
写在前面: 最近项目的前框框架用的是ligerUI,里面用到了ligerGrid表格,下面就来说说从后台获取数据并在前台页面进行完美展示.啊哈哈哈..(天啦,坐我旁边的丽姐貌似炒股 一个月可以搞几十万 ...
- 跟我学ASP.NET MVC之三:完整的ASP.NET MVC程序-PartyInvites
摘要: 在这篇文章中,我将在一个例子中实际地展示MVC. 场景 假设一个朋友决定举办一个新年晚会,她邀请我创建一个用来邀请朋友参加晚会的WEB程序.她提出了四个注意的需求: 一个首页展示这个晚会 一个 ...
随机推荐
- 第三方登陆微博、qq、微信
源文:http://blog.csdn.net/tivonalh/article/details/60954373 假设是已经申请完成各平台开发者账号. 先来简单的,微博和QQ 微博: 引入微博JS ...
- MVC Partial页面的使用
先建立Action: public PartialViewResult CurrentCount() { ViewBag.Count = CurrentUserCount; return Partia ...
- 洛谷P2464 [SDOI2008] 郁闷的小j [分块]
题目传送门 郁闷的小j 题目描述 小J是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架.虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的危险,这也 ...
- 小程序登陆遇到 ERR_REQUEST_PARAM
小程序测试环境突然登陆不上,返回的错误信息是{}"code":-1,"error":"ERR_REQUEST_PARAM"}. 小程序登陆代 ...
- FastReport.Net使用:[5]主从表
主从报表在日常生活中也很常用,譬如订单,班级学生报表等.下面以学生选课为例,以学生为主表,选课为从表做一学生选课报表. 绘制简单主从报表 1.绘制报表标题. 2.为数据区添加从表. ●可以直接右键数据 ...
- 【BZOJ 3566】 3566: [SHOI2014]概率充电器 (概率树形DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...
- 矩阵&行列式
# 代数 排列 对换,对于一个排列操作,对于一个偶排列一次对换之后变为奇排列 反之变为偶排列 行列式 N阶行列式室友N^2个数aij(i,j = 1,2,3,...n) 行列式的数=\(\sum_ { ...
- SPOJ1811 && SPOJ1812
SPOJ1811 && SPOJ1812 LCS && LCS2 非常神奇的两道题... 题目大意: 给定n个字符串,求最长公共子串 做法1: 后缀数组: 把字符串连起 ...
- 【lct】bzoj1036 [ZJOI2008]树的统计Count
题意:给你一棵树,点带权,支持三种操作:单点修改:询问链上和:询问链上max. 这里的Query操作用了与上一题不太一样的做法(上一题用那种做法,因为在边带权的情况下换根太困难啦): 先ChangeR ...
- 《深入理解Spark-核心思想与源码分析》(五)第五章任务提交与执行
即欲捭之贵周,即欲阖之贵密.周密之贵,微而与道相随.---<鬼谷子> 解释:译文:如果要分析问题,关键在于周详,如果要综合归纳问题,关键在于严密.周详严密的关键在于精深而与道相随. 解词: ...