ASP.NET技巧:做個DataList 可分頁的數據源

發表于:2008-04-07來源:作者:點擊數: 標簽:
這個數據源,分兩部分,一是從數據類中調出數據,然后在本數據源中對分頁參數以及頁面分頁輔助控件進行操作!在前面有三個控件控制翻頁,一個下拉列表,兩個LinkButton! 下面 fill() 方法調用很簡單,在頁面中要重新綁定的地方 寫上 fill() 就可以了,呵呵!
這個數據源,分兩部分,一是從數據類中調出數據,然后在本數據源中對分頁參數以及頁面分頁輔助控件進行操作!在前面有三個控件控制翻頁,一個下拉列表,兩個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();
  }

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97