datagridview分页:C#实现DataGridView分页功能来源: 发布时间:星期三, 2008年12月24日 浏览:35次 评论:0
从界面可以看到在设计时需要个DataGridView、BindingNavigate、BindingSourceControl控件分别命名为dgvInfo、bdnInfo、bdsInfo 在bdnInfoControl控件中添加几个用于选择页面lable和botton如上图所示 设计时: 1、定义几个所需公有成员: pageSize = 0; //每页显示行数 nMax = 0; //总记录数 pageCount = 0; //页数=总记录数/每页显示行数 pageCurrent = 0; //当前页号 nCurrent = 0; //当前记录行 DataSet ds = DataSet; DataTable dtInfo = DataTable; 2、在窗体载入事件中从数据源读取记录到DataTable中: strConn = "SERVER=www.dow88.cn;DATABASE=NORTHWIND;UID=SA;PWD=ULTRATEL"; //数据库连接串 SqlConnection conn = SqlConnection(strConn); conn.Open; strSql = "SELECT * FROM CUSTOMERS"; SqlDataAdapter sda = SqlDataAdapter(strSql,conn); sda.Fill(ds,"ds"); conn.Close; dtInfo = ds.Tables[0]; InitDataSet; 3、用当前页面数据填充DataGridView private void InitDataSet ...{ pageSize = 20; //设置页面行数 nMax = dtInfo.Rows.Count; pageCount=(nMax/pageSize); //计算出总页数 ((nMax % pageSize) > 0) pageCount; pageCurrent = 1; //当前页数从1开始 nCurrent = 0; //当前记录数从0开始 LoadData; } private void LoadData ...{ nStartPos = 0; //当前页面开始记录行 nEndPos = 0; //当前页面结束记录行 DataTable dtTemp = dtInfo.Clone; //克隆DataTable结构框架 (pageCurrent pageCount) nEndPos = nMax; nEndPos = pageSize * pageCurrent; nStartPos = nCurrent; lblPageCount.Text = pageCount.; txtCurrentPage.Text = Convert.(pageCurrent); //从元数据源复制记录行 for ( i = nStartPos; i < nEndPos; i) ...{ dtTemp.ImportRow(dtInfo.Rows[i]); nCurrent; } bdsInfo.DataSource = dtTemp; bdnInfo.BindingSource = bdsInfo; dgvInfo.DataSource = bdsInfo; } 4、菜单响应事件: private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e) ...{ (e.ClickedItem.Text "关闭") ...{ this.Close; } (e.ClickedItem.Text "上页") ="Vpl340"> ...{ pageCurrent--; (pageCurrent <= 0) ...{ MessageBox.Show("已经是第页请点击“下页”查看!"); ; } ...{ nCurrent = pageSize * (pageCurrent - 1); } LoadData; } (e.ClickedItem.Text "下页") ...{ pageCurrent; (pageCurrent > pageCount) ...{ MessageBox.Show("已经是最后页请点击“上页”查看!"); ; } ...{ nCurrent=pageSize*(pageCurrent-1); } LoadData; } } 1
相关文章
读者评论
发表评论 |