DataGridView在winform的分页效果
这几天在做一个winform的小软件,用到了datagridview这个庞大而让人头疼的控件,这么一个号称先进的东东,居然没办法分页。为了软件如期完工,先用以下方法完成分页。感谢原作者的同时,发现这种方法绝对不是一个有效率的好方法,他是伪分页。因为每次分页都填充了整个DataSet,只是视觉上给人一种分页的感觉。只让用户看到当页的,其他页隐藏起来。先用用吧,有好办法再来总结。另注,此写法有问题,我又在软件中修正。
------------------------------------------------------------------------------------------------
相象很多人都直接用到它在webform的分页,而winform的分页没有涉及到,今天页是刚好碰到了,找了一些资料整理下 方法一
private void Form1_Load(object sender, EventArgs e) {
// TODO: 这行代码将数据加载到表“myDBDataSet.login”中。您可以根据需要移动或移除它。
this.loginTableAdapter.Fill(this.myDBDataSet.login);//自动添加数据时自动生成的
int intMod, dgr;
dataGridView2.ScrollBars = System.Windows.Forms.ScrollBars.None;//先让垂直滚动条消失
dgr = dataGridView2.RowCount-1;//取出DGV的行数,为什么要减一是因为它总是多出一行给你编辑的所以那行也占用一行的空间 if (dgr % 10 == 0) //进行取模 { intMod = 0; } else {
intMod = 1; }
for (int i = 1; i <= dgr / 10+intMod; i++) //主要时这个for循环将表一共分为几页添加到comboBox {
comboBox2.Items.Add(\"第\" + i + \"页\"); }
comboBox2.SelectedIndex = 0; //默认选中第一个 }
然后在comboBox1_SelectedValueChanged事件里面添加下面代码
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
dataGridView2.FirstDisplayedScrollingRowIndex = comboBox2.SelectedIndex * 10; }
以上就让DGV以一页十行的效果来显示了 方法二
using System.Web.Security; using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using SqlHelper;
public partial class SuppliersIDSelect : System.Web.UI.Page {
Helper he = new Helper();//这是链接数据库的代码,见后面 static int i = 1;//页数
protected void Page_Load(object sender, EventArgs e) {
GridView1.DataSource = he.BindSuppliersInfo();
if (!IsPostBack) {
this.hiddenfm.Value = (string)Request[\"name\"];
Label1.Text = \"当前页码是\" + Convert.ToString(GridView1.PageIndex + i); GridView1.DataBind(); } }
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) {
GridView1.PageIndex = e.NewPageIndex;
Label1.Text = \"当前页码是\" + Convert.ToString(GridView1.PageIndex + i); GridView1.DataBind(); } }
因篇幅问题不能全部显示,请点此查看更多更全内容