Winform中WebService+DataGridView分页

在设计时需要一个DataGridView、BindingNavigate、BindingSource控件,分别命名为dgvInfo、bdnInfo、bdsInfo。


public
partial class Form1 : 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 Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { WebService.Service1 webSer = new WFDemo2.WebService.Service1(); DataTable dt = webSer.StrongProduct("4928d4a552324277a3376ecdc5c284f6", "品牌,商品名称,型号,颜色,配置,商品ID,批发价,批发起订数量").Tables[0]; dtInfo = dt; //dgvInfo.DataSource InitDataSet(); } private void InitDataSet() { pageSize = 3; //设置页面行数 nMax = dtInfo.Rows.Count; //记录总数 pageCount = (nMax / pageSize); //计算出总页数 if ((nMax % pageSize) > 0) pageCount++; pageCurrent = 1; //当前页数从1开始 nCurrent = 0; //当前记录数从0开始 lblTotalRecord.Text = string.Format("共{0}条记录",nMax); //显示总记录数 LoadData(); } private void LoadData() { int nStartPos = 0; //当前页面开始记录行 int nEndPos = 0; //当前页面结束记录行 DataTable dtTemp = dtInfo.Clone(); //克隆DataTable结构框架 if (pageCurrent == pageCount) nEndPos = nMax; else nEndPos = pageSize * pageCurrent; nStartPos = nCurrent; 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 == "上一页") { if (pageCurrent <= 1) { //MessageBox.Show("已经是第一页,请点击下一页查看!"); return; } else { pageCurrent--; nCurrent = pageSize * (pageCurrent - 1); } LoadData(); } if (e.ClickedItem.Text == "下一页") { if (pageCurrent >= pageCount) { //MessageBox.Show("已经是最后一页,请点击上一页查看!"); return; } else { pageCurrent++; nCurrent = pageSize * (pageCurrent - 1); } LoadData(); } if (e.ClickedItem.Text == "转到") { if (!string.IsNullOrEmpty(txtCurrentPage.Text)) { pageCurrent = int.Parse(txtCurrentPage.Text.Trim()); if (pageCurrent > pageCount || pageCurrent<1) { MessageBox.Show(string.Format("请输入0到{0}的值!",pageCount)); return; } nCurrent = pageSize * (pageCurrent - 1); LoadData(); } else { MessageBox.Show("请输入要转到的页号!"); return; } } } }

posted on 2012-07-13 14:06  ~~小麦  阅读(288)  评论(0编辑  收藏  举报

导航