ASP.NET技巧:做个DataList可分页的数据源

  这个数据源,分两部分,一是从数据类中调出数据,然后在本数据源中对分页参数以及页面分页辅助控件进行操作!在前面有三个控件控制翻页,一个下拉列表,两个LinkButton!

  下面 fill() 方法调用很简单,在页面中要重新绑定的地方 写上 fill() 就可以了,呵呵!但是一定要写哦,例如翻页动作执行后!

  下面是db类中的ds方法

  public static DataTable ds(string que)

  {//返回一个装载了SQL制定留言的数据表,

  OleDbConnection con = odb.con();

  OleDbDataAdapter oda = new OleDbDataAdapter();

  oda.SelectCommand=new OleDbCommand(que,con);

  DataSet ds = new DataSet();

  oda.Fill(ds,"thc");

  return ds.Tables["thc"];

  con.Close();

  }下面方法使用的数据源就是上面的这个

  private void fill()

  {//做的一个方法,因为页内将有多次的绑定

  //这里设置一个隐藏的Label,用与储存当前的页索引

  int cup = Convert.ToInt32(pagelbl.Text);

  PagedDataSource ps = new PagedDataSource();//NEW一个分页数据源

  ps.DataSource = odb.ds("select * from guest order by id desc").DefaultView;//送一个SQL语句进去,确定该数据源的数据源,有点绕吧,呵呵

  ps.AllowPaging = true;//允许分页

  ps.PageSize = 2;//设置页的数量

  ps.CurrentPageIndex = cup-1;

  if (!IsPostBack)

  {//判断页面是否第一次载入

  for (int i = 1; i <= ps.PageCount; i++)

  {//循环出页码

  pageddl.Items.Add(i.ToString());

  }

  }

  //下面主要是控制上下翻页按纽是否起用

  pageup.Enabled = true;

  pagedown.Enabled = true;

  if (ps.IsFirstPage)

  {//如果是最前页,上页按纽不可用

  pageup.Enabled = false;

  }

  if (ps.IsLastPage)

  {//如果是最后页,下页按纽不可用

  pagedown.Enabled = false;

  }

  //设置页码下拉菜单当前选中的值

  pageddl.SelectedItem.Text = cup.ToString();

  //终于可以绑定给DataList了

  DataList1.DataSource = ps;

  DataList1.DataKeyField = "id";

  DataList1.DataBind();

  }

  再下面是翻页事件的处理

  protected void pageddl_SelectedIndexChanged(object sender, EventArgs e)

  {//页码下拉菜单事件

  pagelbl.Text = pageddl.SelectedItem.Text.ToString();

  fill();

  }

  protected void pagedown_Click(object sender, EventArgs e)

  {//下页事件

  pagelbl.Text = Convert.ToString(Convert.ToInt32(pagelbl.Text)+1);

  fill();

  }

  protected void pageup_Click(object sender, EventArgs e)

  {//上页事件

  pagelbl.Text = Convert.ToString(Convert.ToInt32(pagelbl.Text)-1);

  fill();

  }