ITPUB??ì3
ITPUB论坛 » Web开发 » ASP.NET与AJAX » ASP.NET技巧:做个DataList 可分页的数据源(转自希赛网)

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: [转载] ASP.NET技巧:做个DataList 可分页的数据源(转自希赛网)
离线 huameizz
初级会员



精华贴数 0
个人空间 0
技术积分 114 (15049)
社区积分 0 (1165540)
注册日期 2006-11-2
论坛徽章:0
      
      

发表于 2006-11-7 16:57 
ASP.NET技巧:做个DataList 可分页的数据源(转自希赛网)

转自希赛网www.csai.cn


这个数据源,分两部分,一是从数据类中调出数据,然后在本数据源中对分页参数以及页面分页辅助控件进行操作!在前面有三个控件控制翻页,一个下拉列表,两个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();
  }


只看该作者    顶部
离线 马甲走江湖
江湖任我行


精华贴数 4
个人空间 70
技术积分 19686 (47)
社区积分 26188 (42)
注册日期 2006-10-26
论坛徽章:151
现任管理团队成员金牌徽章银牌徽章铜牌徽章2008欧洲杯之星欧洲冠军杯纪念徽章
2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:蹦床体育版块博采纪念徽章2008北京奥运纪念徽章:帆船2008北京奥运纪念徽章:排球

发表于 2006-11-8 13:44 
不错。


__________________
The following programme is not suitable for children

香车圈子,欢迎您的加入
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问