欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-08-14 16:28:34
  这个数据源,分两部分,一是从数据类中调出数据,然后在本数据源中对分页参数以及页面分页辅助控件进行操作!在前面有三个控件控制翻页,一个下拉列表,两个linkbutton!...

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