DataGrid实现自定义分页,鼠标移至变色,删除确认、可编辑,可删除

displaytag分页和鼠标经过变色功能 displaytag标签扩展:鼠标经过行变色功能 立即下载
 
先在数据库中定义存储过程,轻易实现百万级数据分页:
//@PageSize:分页大小,PageIndex:页号,@PageCount:总页数,@recordCount:记录数
CREATE PROCEDURE GetCustomDataPage @pageSize int, @pageIndex int, @pageCount int output, @recordCount int output AS
declare @SQL varchar(1000)
select @recordCount=count(*) from products
set @pageCount=ceiling(@recordCount*1.0/@pageSize)
if @pageIndex = 0 or @pageCount<=1
set @SQL=′select top ′+str(@pageSize)+′ productID,productName, unitPrice from products order by productID asc′
else if @pageIndex = @pageCount -1
 set @SQL=′select * from ( select top ′+str(@recordCount - @pageSize * @pageIndex)+′ productID,productName, unitPrice from products order by productID desc) TempTable order by productID asc′

else  set @SQL=′select top ′+str(@pageSize) +′ * from ( select top ′+str(@recordCount - @pageSize * @pageIndex)+′ productID,productName, unitPrice from products order by productID desc) TempTable order by productID asc′

exec(@SQL)
GO
好了,存储过程建好了,那么如何在.Net中使用呢?请看以下代码:
private uint pageCount;  //总页数 
        private uint recordCount;  //总记录数
        private DataSet GetPageData(uint pageSize, uint pageIndex) 
        { 
            string strConn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];            
            SqlConnection conn = new SqlConnection(strConn); 
            conn.Open(); 
            SqlCommand command = new SqlCommand("GetCustomDataPage",conn);  //第一个参数为存储过程名 
            command.CommandType = CommandType.StoredProcedure;   //声明命令类型为存储过程 
            command.Parameters.Add("@pageSize",SqlDbType.Int); 
            command.Parameters["@pageSize"].Value = pageSize; 
            command.Parameters.Add("@pageIndex",SqlDbType.Int); 
            command.Parameters["@pageIndex"].Value = pageIndex; 
            command.Parameters.Add("@pageCount",SqlDbType.Int); 
            command.Parameters["@pageCount"].Value = pageCount; 
            command.Parameters["@pageCount"].Direction = ParameterDirection.Output;  //存储过程中的输出参数 
            command.Parameters.Add("@recordCount",SqlDbType.Int); 
            command.Parameters["@recordCount"].Value = recordCount; 
            command.Parameters["@recordCount"].Direction = ParameterDirection.Output; //存储过程中的输出参数 
            SqlDataAdapter adapter = new SqlDataAdapter(command); 
            DataSet ds = new DataSet(); 
            adapter.Fill(ds);            
            //获得输出参数值 
            pageCount = Convert.ToUInt32(command.Parameters["@pageCount"].Value); 
            recordCount = Convert.ToUInt32(command.Parameters["@recordCount"].Value); 
            
            conn.Close(); 
            return ds; 
        } 
        //绑定数据到DataGrid中 
        private void BindDataGrid() 
        { 
            DataSet ds = GetPageData((uint)dgProduct.PageSize,(uint)dgProduct.CurrentPageIndex); 
            dgProduct.VirtualItemCount = (int)recordCount; 
            dgProduct.DataSource = ds; 
            dgProduct.DataBind(); 
        } 
        //页面加载时就绑定DataGrid 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            if(!Page.IsPostBack) 
            { 
               BindDataGrid(); 
            } 
        } 
        //用户翻页时事件处理 
        private void dgProduct_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) 
        { 
            dgProduct.CurrentPageIndex = e.NewPageIndex; 
            BindDataGrid(); 
        } 
        //用户单击编辑按纽时事件处理 
        private void dgProduct_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) 
        { 
            dgProduct.EditItemIndex = e.Item.ItemIndex; 
            BindDataGrid(); 
        } 
        //用户单击取消按纽时事件处理 
        private void dgProduct_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) 
        { 
            dgProduct.EditItemIndex = -1; 
            BindDataGrid(); 
        } 
        //用户单击更新按纽时事件处理 
        private void dgProduct_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) 
        { 
            string strConn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];            
            SqlConnection conn = new SqlConnection(strConn); 
            conn.Open(); 
            //string strSQL = "update from products set productName=@productName, set unitPrice=@unitPrice where productID=@productID"; 
            string strSQL = "update products set productName=@productName where productID=@productID"; 
            SqlCommand command = new SqlCommand(strSQL,conn); 
            command.Parameters.Add("@productName",SqlDbType.NVarChar,40); 
            command.Parameters["@productName"].Value = ((TextBox)(e.Item.Cells[1].Controls[0])).Text.Trim(); 
            //command.Parameters.Add("@unitPrice",SqlDbType.Int); 
            //command.Parameters["@unitPrice"].Value = Convert.ToInt32(((TextBox)(e.Item.Cells[2].Controls[0])).Text.Trim()); 
            command.Parameters.Add("@productID",SqlDbType.Int); 
            command.Parameters["@productID"].Value = dgProduct.DataKeys[e.Item.ItemIndex]; 
            command.ExecuteNonQuery(); 
            conn.Close(); 
            dgProduct.EditItemIndex = -1; 
            BindDataGrid(); 
        } 
       //用户单击删除按纽时事件处理 
        private void dgProduct_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) 
        { 
            string strConn = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]; 
            SqlConnection conn = new SqlConnection(strConn); 
            conn.Open(); 
            SqlCommand command = new SqlCommand("DeleteProduct",conn); 
            command.CommandType = CommandType.StoredProcedure; 
            
            command.Parameters.Add("@productID",SqlDbType.Int); 
            command.Parameters["@productID"].Value = dgProduct.DataKeys[e.Item.ItemIndex]; 
            command.ExecuteNonQuery(); 
            BindDataGrid(); 
        } 
        //实现删除确认及颜色交替显示功能 
        private void dgProduct_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 
        { 
            if(e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem) 
            { 
               Button btnDelete = (Button)(e.Item.Cells[4].Controls[0]); 
               btnDelete.Attributes.Add("onClick","JavaScript:return confirm(’确定删除?’)"); 
               e.Item.Attributes.Add("onMouseOver","this.style.backgroundColor=’#FFCC66’"); 
               e.Item.Attributes.Add("onMouseOut","this.style.backgroundColor=’#ffffff’"); 
            } 
        }
基于CPCC_S_TASK_LIST_MAINTAIN的工艺路线组件批量分配实战与避坑指南 本文详细解析了SAP PP模块中基于CPCC_S_TASK_LIST_MAINTAIN函数实现工艺路线组件批量分配的实战技巧与避坑指南。针对批量分配的核心挑战,提供了参数配置、BAPI协同使用、Excel导入等解决方案,并分享了大容量数据处理优化经验,帮助用户高效完成工艺路线组件分配任务。 阅读详情

相关推荐

AMP架构下的核间通信:RPMSG与共享内存原理详解

本文以RK3568等异构多核硬件为例,深入浅出解析了AMP架构下核间通信的核心逻辑,阐明RPMSG并非替代共享内存,而是以共享内存为数据载体、硬件信箱为中断通知工具、VirtIO为数据管理规则,构建的标准化高层协议与框架,为开发者提供简洁API,实现不同操作系统核心间高效通信。

qq_61335271的博客 2051

(ASP.NET)修改和删除DataGrid行——数据库访问

本程序涉及到数据库的添加,修改和删除操作。 懒得写了,把界面贴出来,照着界面画就可以了。本例数据库:sqlserver2000附带的pubs数据库,看一下连接字符串就很清楚了。如果要在本机器上运行,把uid和pwd改成你自己sql登陆用户名和密码。  创建一个web页面,命名为:add.aspx。 界面设计如图:  add.aspx代码: &lt;%@ page language="c#" cod...

water84222的专栏 442

电商数据分析19——数据分析在电商平台价格弹性研究中的应用

价格弹性是一个衡量产品价格变化对销量影响的经济学指标,对于电商平台而言,深入理解和有效运用价格弹性,对于制定竞争策略、优化产品定价具有重要意义。随着大数据时代的到来,通过数据分析研究产品的价格弹性,成为了电商企业制定价格策略、调整市场定位、优化促销活动的重要依据。

theskylife的博客 2836

(C#)DataGrid实现自定义分页,鼠标移至变色,删除确认、可编辑,可删除

数据库:SqlServer 2000, 数据源:系统自带的Northwind操作系统:Window XP 中文版开发平台:.Net Framework 1.1, C#语言效果预览:   好了,让我们开始奇异的Datagrid之旅吧:先在数据库中定义存储过程,轻易实现百万级数据分页://@PageSize:分页大小,PageIndex:页号,@PageCount:总页数,@recordCount:记

fzzf 894

Catia二次开发QueryInterface的操蛋问题

探索了很久,尝试录制宏,打开部件属性窗口,然后随意设置一些属性(必须改变一些东西才能录制成功,否则不会录制到任何东西),再看录制的结果,发现原来CATIAAnalyze是从Product那里来的。例如获得一个部件的体积,找到相关接口CATIAAnalyze,但是这个部件的CATIAAnalyze的对象不知道如何获取。总结一下,写Catia二开代码,就像漂亮国那款《莫里秀》 又名《爸爸死哪了》的综艺节目,大部分时间都是在找爸爸!Catia二开很痛苦,明明已经找到接口类,但是却不知道怎么获得这个接口类的对象。

gergul的专栏 748

网络协议——Modbus-RTU

网络协议——Modbus-RTU,简介、消息格式、Modbus寄存器种类说明、功能码01H、功能码02H、功能码03H、功能码04H、功能码05H、功能码06H、功能码0FH、功能码10H。

计算机硕士的博客 9905
上一篇: asp.net 中DataGrid自定义分页(简单,实用,易懂)
下一篇: (C#)DataGrid实现自定义分页,鼠标移至变色,删除确认、可编辑,可删除
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值