我页面里面有个datalist控件,和一个objectdatasourse,我自己写了个类,有个方法
    public PagedDataSource getware()
    {
        string strcon = ConfigurationManager.ConnectionStrings["SuperMarketDBConnectionString"].ConnectionString;
        string str = "select * from T_Ware";
        SqlConnection con=new SqlConnection ();
        con.ConnectionString =strcon ;
        SqlDataAdapter sda = new SqlDataAdapter(str, con);
        DataSet ds = new DataSet();
        sda.Fill(ds, "Ware");
        PagedDataSource pds= new PagedDataSource();
        pds.DataSource = ds.Tables["Ware"].DefaultView;
        pds.AllowPaging = true;
        pds.PageSize = 6;
        return pds;
        
    }这个方法给了objectdatasourse,我数据库里面有14条数据,这么说有3页,我datalist里面也编辑模版了,绑定了某些列,我界面还有2个按钮,怎么实现上一页,和下一页啊

解决方案 »

  1.   

    我实现的不是你这样的,用return 可以?
      

  2.   

    按我这种情况,有datalist和objectdatasourse控件,怎么实现嘛
      

  3.   

    翻页主要是对 PagedDataSource的CurrentPageIndex进行加减操作 
      

  4.   

    嗯 我知道
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Class1 cs = new Class1();
                PagedDataSource pds = cs.getware();
                Labeltotal.Text = "共" + pds.PageCount + "页";
                Labelcurrent.Text = "当前第" + ((pds.CurrentPageIndex) + 1).ToString() + "页";
                ViewState["currentpage"] = 1;
            }    }
        protected void LinkButton3_Click(object sender, EventArgs e)
        {
            Class1 cs = new Class1();
            PagedDataSource pds = cs.getware();
            if (1 !=(int )ViewState["currentpage"])
            {
                pds.CurrentPageIndex = (int)ViewState["currentpage"] - 2;        }
        }
        protected void LinkButton4_Click(object sender, EventArgs e)
        {
            Class1 cs = new Class1();
            PagedDataSource pds = cs.getware();
            if (pds.PageCount != (int)ViewState["currentpage"])
            {
                pds.CurrentPageIndex = (int)ViewState["currentpage"] ;
            }
        }
    这是我的代码
      

  5.   

            int currentPage = Convert.ToInt32(LabelNowPage.Text); //这是用一个label显示你当前的页数。   
                ps.AllowPaging = true;
                中间省略了数据库的操作
                ps.PageSize = 5;
                ps.CurrentPageIndex = currentPage - 1;            LinkButtonTop.Enabled = true;
                LinkButtonPrev.Enabled = true;
                LinkButtonNext.Enabled = true;
                LinkButtonLast.Enabled = true;            if (currentPage == 1)
                {
                    LinkButtonTop.Enabled = false;
                    LinkButtonPrev.Enabled = false;
                }
                if (currentPage == ps.PageCount)
                {
                    LinkButtonNext.Enabled = false;
                    LinkButtonLast.Enabled = false;            }
               LabelCount.Text = Convert.ToString(ps.PageCount);//这是显用总页数的label
               this.DataList1.DataSource = ps;
               this.DataList1.DataBind();        }
    上面的代码是数据绑定函数里面.
    protected void LinkButtonPrev_Click(object sender, EventArgs e)
            {
                LabelNowPage.Text = Convert.ToString(Convert.ToInt32(LabelNowPage.Text) - 1);
                this.dlbind();
            }//这个就是实现上一页的函数
    我这是有首页,上一页,下一页,尾页四个
    不知道能看得懂不?
      

  6.   

    你以上那个方法都是放在load里面吧,还有你没用objectdatasourse把
      

  7.   

    没有用objectdatasourse 我看的基本上都这样实现的 ,我上面的一段就是放在你的getware函数里面,只是直接绑定到了datalist上面了,你用的是return 你外边有些操作吧 你这样弄感觉反而复杂了
      

  8.   

    那我把objectdatasourse删了,那我把绑定我用代码绑定,放在load里面,但是我不知道你按那个按钮了,在load时间里面 在服务器怎么区别呢
      

  9.   

    哈哈我解决了,大哥,谢谢你,我知道了,objectdatasourse我多用了,请教一下objectdatasourse什么时候用比较好呢
      

  10.   

    我也是新手 objectdatasourse没用过