错误问题解决方法是:“改成DataSet,不要使用SqlDataReader”但是我现在拿到的数据源是调用别人写的DLL中的一个方法,返回一个collection,然后绑定到GRIDVIEW。请问怎么解决?

解决方案 »

  1.   

    SqlDataReader 是不支持分页的,改成DataSet就OK了
      

  2.   

    试试这个
    public void dlBind()
        {
            int curpage = Convert.ToInt32(this.labPage.Text);
            PagedDataSource ps = new PagedDataSource();
            sqlconn = myCon.getCon();
            sqlconn.Open();
            string sqlstr = "select a.*,b.* from tb_Card as a join tb_Module as b on a.ModuleID=b.ModuleID";
            SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr, sqlconn);
            DataSet ds = new DataSet();
            MyAdapter.Fill(ds, "tb_Card");
            ps.DataSource = ds.Tables["tb_Card"].DefaultView;
            ps.AllowPaging = true; //是否可以分页
            ps.PageSize = 2; //显示的数量
            ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
            this.lnkbtnUp.Enabled = true;
            this.lnkbtnNext.Enabled = true;
            this.lnkbtnBack.Enabled = true;
            this.lnkbtnOne.Enabled = true;
            if (curpage == 1)
            {
                this.lnkbtnOne.Enabled = false;//不显示第一页按钮
                this.lnkbtnUp.Enabled = false;//不显示上一页按钮
            }
            if (curpage == ps.PageCount)
            {
                this.lnkbtnNext.Enabled = false;//不显示下一页
                this.lnkbtnBack.Enabled = false;//不显示最后一页
            }
            this.labBackPage.Text = Convert.ToString(ps.PageCount);
            this.dlContent.DataSource = ps;
            this.dlContent.DataKeyField = "CardID";
            this.dlContent.DataBind();
        }
        protected void lnkbtnOne_Click(object sender, EventArgs e)
        {
            this.labPage.Text = "1";
            this.dlBind();
        }
        protected void lnkbtnUp_Click(object sender, EventArgs e)
        {
            this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1);
            this.dlBind();
        }
        protected void lnkbtnNext_Click(object sender, EventArgs e)
        {
            this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1);
            this.dlBind();
        }
        protected void lnkbtnBack_Click(object sender, EventArgs e)
        {
            this.labPage.Text = this.labBackPage.Text;
            this.dlBind();
        }
      

  3.   

    你不是有collection吗每次点击翻页,你自己分析一下collection,然后把该显示的数据绑定给gridview不就可以了
      

  4.   

    用objectdatasource作为数据源就OK了!