DatGridView加载数据和分页!(在线==)
namespace //省略
{
public //省略
{
int pageSize = 0;
int maxRec = 0;
int pageCount = 0;
int currentPage = 0;
int recNo = 0;
DataTable dtSource = new DataTable();
DataSet ds = null;
public Form_Manufactory()
{
InitializeComponent();
}
private void getFillDateset()
{
try
{
//每页显示数
pageSize = 20;
//得到最大记录数
maxRec = dtSource.Rows.Count;
//共有多少页
pageCount = (maxRec / pageSize);
//取余数
if ((maxRec % pageSize) > 0)
{
pageCount++;
}
//默认第一页
currentPage = 1;
recNo = 0; //当前记录数从0开始
LoadPage();
}
catch
{
}
}
/// <summary>
/// 判断是否数据已经加载
/// </summary>
/// <returns></returns>
private bool CheckFillButton()
{
if (pageSize == 0)
return false;
else
return true;
}
/// <summary>
/// 取DataTable的数据
/// </summary>
private void LoadPage()
{
int startRec; //当前页面开始记录行
int endRec; //当前页面结束记录行
DataTable dtTemp;
dtTemp = dtSource.Clone();
if (currentPage == pageCount)
endRec = maxRec;
else
endRec = pageSize * currentPage;
startRec = recNo;
for (int i = startRec; i < endRec; i++)
{
dtTemp.ImportRow(dtSource.Rows[i]);
recNo++;
}
this.dataGridView_Manufactory.DataSource = dtTemp;
}
private void changepage(int m)
{
switch (m)
{
case 1:
if (currentPage == 1)
{
MessageBox.Show("已经是第一页了");
return;
}
currentPage = 1;
recNo = 0;
LoadPage();
break;
case 2:
//if (currentPage == pageCount)
// recNo = pageSize * (currentPage - 2);
currentPage--;
if (currentPage < 1)
{
MessageBox.Show("已经是第一页了");
currentPage = 1;
return;
}
else
recNo = pageSize * (currentPage - 1);
LoadPage();
break;
case 3:
currentPage++;
if (currentPage > pageCount)
{
//currentPage = pageCount;
//if (recNo == maxRec)
if (currentPage > pageCount)
{
MessageBox.Show("已经是最后一页了");
return;
}
else
recNo = pageSize * (currentPage - 1);
}
LoadPage();
break;
case 4:
if (!CheckFillButton())
return;
if (recNo == maxRec)
{
MessageBox.Show("已经是最后一页了");
return;
}
currentPage = pageCount;
recNo = pageSize * (currentPage - 1);
LoadPage();
break;
}
}
//连接服务器端读取数据
private DataSet GetData()
{
string error = "";
ds = MainDataWeb.GetManufactory(ref error);// 从服务器返回一个DataSet
if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0 || error != "")
{
#if DEBUG
MessageBox.Show("请添加数据库数据", error);
#else
MessageBox.Show(ErrorMessageConst.ConnectServiceError);
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Loc:{0}_GetData,Error:{1}", this.ToString(),error);
log.WriteLog(sb.ToString());
#endif
}
//dataGridView_Manufactory.DataSource = ds.Tables[0].DefaultView;
//comboBox1.DataSource = ds.Tables[0].DefaultView;
//comboBox1.DisplayMember = "AfterSalerName";
return ds;
}
private void Form_Manufactory_Load(object sender, EventArgs e)
{
this.dataGridView_Manufactory.AutoGenerateColumns = false;
this.dataGridView_Manufactory.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
GetData();
dtSource = ds.Tables[0];
getFillDateset();
}
问题来勒:从服务器返回的DataSet是个查询所有数据的语句..
因为数据库只有一条数据,但是运行之后的DataGridView却显示了2条重复的数据..
而且感觉分页好像也有问题,希望大家来看下..
在线等待..