C# Winform DataGridView分页,不利用VS2008的BindingNavigator控件,自己设置按钮前一页,后一页,每页显示条数等按钮,该如何实现 C# Winform DataGridView分页,不利用VS2008的BindingNavigator控件,自己设置按钮前一页,后一页,首页,末页,每页显示条数等按钮,该如何实现, 很急 求助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就要自己做分页咯,上网搜搜吧,这个东西挺多的。关键就是:数据集合(DataTable),PageSize,PageNumber,PageCount了。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1{ public partial class Form2 : Form { int pageSize = 0; //每页显示行数 int nMax = 0; //总记录数 int pageCount = 0; //页数=总记录数/每页显示行数 int pageCurrent = 0; //当前页号 int nCurrent = 0; //当前记录行 DataSet ds = new DataSet(); DataTable dtInfo = new DataTable(); public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { string strConn = "SERVER=yutai;DATABASE=YUTAIDB;UID=SA;PWD=yutai2008"; //数据库连接字符串 SqlConnection conn = new SqlConnection(strConn); conn.Open(); string strSql = "SELECT ID,Accounts,Photo_Max,IsEnter FROM MEMBER"; SqlDataAdapter sda = new SqlDataAdapter(strSql, conn); sda.Fill(ds, "ds"); conn.Close(); dtInfo = ds.Tables[0]; InitDataSet(); } private void InitDataSet() { pageSize = 10; //设置页面行数 nMax = dtInfo.Rows.Count; pageCount = (nMax / pageSize); //计算出总页数 if ((nMax % pageSize) > 0) pageCount++; pageCurrent = 1; //当前页数从1开始 nCurrent = 0; //当前记录数从0开始 LoadData(); } private void LoadData() { int nStartPos = 0; //当前页面开始记录行 int nEndPos = 0; //当前页面结束记录行 DataTable dtTemp = dtInfo.Clone(); //克隆DataTable结构框架 if (pageCurrent == pageCount) { nEndPos = nMax; toolStripButton2.Enabled = false; } else { nEndPos = pageSize * pageCurrent; toolStripButton2.Enabled = true; } nStartPos = nCurrent; if (nStartPos == 0) toolStripButton1.Enabled = false; else toolStripButton1.Enabled = true; lblPageCount.Text = "/" + pageCount.ToString(); txtCurrentPage.Text = Convert.ToString(pageCurrent); //从元数据源复制记录行 for (int i = nStartPos; i < nEndPos; i++) { dtTemp.ImportRow(dtInfo.Rows[i]); nCurrent++; } bdsInfo.DataSource = dtTemp; bdnInfo.BindingSource = bdsInfo; dgvInfo.DataSource = bdsInfo; } private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Text == "关闭") { this.Close(); } if (e.ClickedItem.Text == "上一页") { pageCurrent--; if (pageCurrent <= 0) { MessageBox.Show("已经是第一页,请点击“下一页”查看!"); return; } else { nCurrent = pageSize * (pageCurrent - 1); } LoadData(); } if (e.ClickedItem.Text == "下一页") { pageCurrent++; if (pageCurrent > pageCount) { MessageBox.Show("已经是最后一页,请点击“上一页”查看!"); return; } else { nCurrent=pageSize*(pageCurrent-1); } LoadData(); } if (e.ClickedItem.Text == "第一页") { nCurrent = 0; pageCurrent = 1; LoadData(); } if (e.ClickedItem.Text == "最后一页") { nCurrent = pageSize*(pageCount-1); pageCurrent = pageCount; LoadData(); } if (e.ClickedItem.Text == "跳转") { try { nCurrent = pageSize * (Convert.ToInt32(txtCurrentPage.Text.Trim()) - 1); pageCurrent = Convert.ToInt32(txtCurrentPage.Text.Trim()); LoadData(); } catch { MessageBox.Show("请输入正确的数字!"); txtCurrentPage.Focus(); } } } }} 怎么样将int型数字转换成7位字符串,不足的时候,前面补0 timer 失效 [C#] 关于线程的使用问题。 关于throw new Exception OWC11 数据显示 C#同名文件删除 如何搜索远程网站的目录 日文的VS2008 运行中文工程 小问题! ChineseLunisolarCalendar 农历转阳历算错了吗? 使用sender rdlc报表如何在程序中设置纵向打印
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
int pageSize = 0; //每页显示行数
int nMax = 0; //总记录数
int pageCount = 0; //页数=总记录数/每页显示行数
int pageCurrent = 0; //当前页号
int nCurrent = 0; //当前记录行
DataSet ds = new DataSet();
DataTable dtInfo = new DataTable(); public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{
string strConn = "SERVER=yutai;DATABASE=YUTAIDB;UID=SA;PWD=yutai2008"; //数据库连接字符串
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
string strSql = "SELECT ID,Accounts,Photo_Max,IsEnter FROM MEMBER";
SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
sda.Fill(ds, "ds");
conn.Close();
dtInfo = ds.Tables[0];
InitDataSet(); } private void InitDataSet()
{
pageSize = 10; //设置页面行数
nMax = dtInfo.Rows.Count;
pageCount = (nMax / pageSize); //计算出总页数
if ((nMax % pageSize) > 0) pageCount++;
pageCurrent = 1; //当前页数从1开始
nCurrent = 0; //当前记录数从0开始
LoadData();
}
private void LoadData()
{
int nStartPos = 0; //当前页面开始记录行
int nEndPos = 0; //当前页面结束记录行 DataTable dtTemp = dtInfo.Clone(); //克隆DataTable结构框架 if (pageCurrent == pageCount)
{
nEndPos = nMax;
toolStripButton2.Enabled = false;
}
else
{
nEndPos = pageSize * pageCurrent;
toolStripButton2.Enabled = true;
} nStartPos = nCurrent;
if (nStartPos == 0)
toolStripButton1.Enabled = false;
else
toolStripButton1.Enabled = true;
lblPageCount.Text = "/" + pageCount.ToString();
txtCurrentPage.Text = Convert.ToString(pageCurrent); //从元数据源复制记录行
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(dtInfo.Rows[i]);
nCurrent++;
}
bdsInfo.DataSource = dtTemp;
bdnInfo.BindingSource = bdsInfo;
dgvInfo.DataSource = bdsInfo;
} private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if (e.ClickedItem.Text == "关闭")
{
this.Close();
}
if (e.ClickedItem.Text == "上一页")
{
pageCurrent--;
if (pageCurrent <= 0)
{
MessageBox.Show("已经是第一页,请点击“下一页”查看!");
return;
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
}
if (e.ClickedItem.Text == "下一页")
{
pageCurrent++;
if (pageCurrent > pageCount)
{
MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
return;
}
else
{
nCurrent=pageSize*(pageCurrent-1);
}
LoadData();
}
if (e.ClickedItem.Text == "第一页")
{
nCurrent = 0;
pageCurrent = 1;
LoadData();
}
if (e.ClickedItem.Text == "最后一页")
{
nCurrent = pageSize*(pageCount-1);
pageCurrent = pageCount;
LoadData();
}
if (e.ClickedItem.Text == "跳转")
{
try
{
nCurrent = pageSize * (Convert.ToInt32(txtCurrentPage.Text.Trim()) - 1);
pageCurrent = Convert.ToInt32(txtCurrentPage.Text.Trim());
LoadData();
}
catch
{
MessageBox.Show("请输入正确的数字!");
txtCurrentPage.Focus();
}
}
}
}
}