string sql = "";            SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ETOCSConnectionString"].ConnectionString);
            con.Open();            sql = "xxxxxxx";
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataAdapter dr = new SqlDataAdapter(cmd);
            dr.Fill(ds, "ETOC1");            GridView2.DataSource = ds.ETOC1;
            GridView2.DataBind();
            con.Close();绑定后显示正常分页无效,选择分页后gridview是空的,什么也没有PageIndexChanging事件中已写
protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
       this.GridView2.PageIndex = e.NewPageIndex;
       GridView2.DataSource = ds.Tables["ETOC1"];
       GridView2.DataBind();
    }请问是什么问题?如何解决

解决方案 »

  1.   

    数据源不支持分页
      要么自己写
    要么用sqlDatasource
    或者是objectDatasource
      

  2.   

    添加控件如图:两个dll结合,实现连接数据库,不用写连接函数,直接引用连接数据库dll,连接数据库,只需一句代码方可连接可以省略25%以上的手写代码,连接后结合分页控件,运行如下图:web.config里面添加如下代码:
     <appSettings>
      <add key="SocutDataLink" value=" server=(local);user=sa;pwd=;database=Northwind;pooling=true;"/>
     </appSettings>
    后台代码:
     protected void Page_Load(object sender, EventArgs e)
        {
            AspNetPager1.RecordCount=(int) Socut.Data.ExecuteScalar("select count(*) from Invoices");
        }
         public void NewData()
        {
            DataSet ds = Socut.Data.ExecuteDataSet("SELECT * from Invoices",AspNetPager1.PageSize*(AspNetPager1.CurrentPageIndex-1),AspNetPager1.PageSize);
            GridView1.DataSource = ds;
            GridView1.DataBind();
        }
         protected void AspNetPager1_PageChanged(object sender, EventArgs e)
         {
             NewData();
         }
    前台AspNetPager1的图片属性设置代码:
     <webdiyer:AspNetPager id="AspNetPager1" runat="server" horizontalalign="Center"
            pagingbuttontype="Image" width="100%" ImagePath="images/" ButtonImageNameExtension="n" ButtonImageExtension=".gif" 
            DisabledButtonImageNameExtension="g" CpiButtonImageNameExtension="r" PagingButtonSpacing="10px" ButtonImageAlign="left"
            OnPageChanged="AspNetPager1_PageChanged" MoreButtonType="Image">
            </webdiyer:AspNetPager>
    下载实例的地址是:
    http://download.csdn.net/user/jinlong5200
    我刚上传的,也许要审核,如果没有,请明日下载
      

  3.   

    或者加我给我写信:邮箱[email protected]
      

  4.   


    什么都没有的原因是DataSet里的数据没有了
    应该把ds放进缓存或Session里。你可以设置断点看一下ds的东西
      

  5.   

    你把绑定数据的程序写在一个方法里
    比如ssss()
    然后在PageIndexChanging事件
    里引用ssss();
    就可以了
    还有一种方法
    可以用viewstate接收ds的值
    然后在PageIndexChanging事件
    引用viewstate
    加上
    GridView2.DataSource = ds.ETOC1; 
    GridView2.DataBind(); 
    这两句就可以了前天刚做出来的,我想应该没问题
      

  6.   

    有否判断回传
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            { 
                //绑定GridView
            }
        }
      

  7.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            { 
                loadgv();
            }
        }
    public void loadgv()

    string sql = "";             SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ETOCSConnectionString"].ConnectionString); 
                con.Open();             sql = "xxxxxxx"; 
                SqlCommand cmd = new SqlCommand(sql, con); 
                SqlDataAdapter dr = new SqlDataAdapter(cmd); 
                dr.Fill(ds, "ETOC1");             GridView2.DataSource = ds.ETOC1; 
                GridView2.DataBind(); 
                con.Close(); 
    }绑定后显示正常 分页无效,选择分页后gridview是空的,什么也没有 PageIndexChanging事件中已写 
    protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e) 
        { 
          this.GridView2.PageIndex = e.NewPageIndex; 
          loadgv();
        } 
      

  8.   

    分页无效,选择分页后gridview是空的,什么也没有 PageIndexChanging事件中已写 
    protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e) 
        { 
          this.GridView2.PageIndex = e.NewPageIndex; 
          GridView2.DataSource = ds.Tables["ETOC1"]; 
          GridView2.DataBind(); 
        } 你的这句不报错吗
    GridView2.DataSource = ds.Tables["ETOC1"]; 
    问题是ds.Tables["ETOC1"]; 
    你到哪找的ds.Tables["ETOC1"]; 根本就没有要不就这样写
    protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e) 
        { 
          this.GridView2.PageIndex = e.NewPageIndex; 
          string sql = "";             SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ETOCSConnectionString"].ConnectionString); 
                con.Open();             sql = "xxxxxxx"; 
                SqlCommand cmd = new SqlCommand(sql, con); 
                SqlDataAdapter dr = new SqlDataAdapter(cmd); 
                dr.Fill(ds, "ETOC1");             GridView2.DataSource = ds.ETOC1; 
                GridView2.DataBind(); 
                con.Close(); 
        }
      

  9.   

    我知道你的ds是全局变量
    要不象你写的改成这样也行
    static dataset ds = new dataset();
    把ds定义静态的
    只不过一个人浏览没问题
    多个人一起浏览就会有问题不定义静态你点分页时ds就是null值所以页面就没数据显示
      

  10.   

    OnPageIndexChanged="GridView2_PageIndexChanging"
      

  11.   

    PageIndexChanging事件中已写 
    protected void GridView2_PageIndexChanging(object sender, GridViewPageEventArgs e) 
        { 
          this.GridView2.PageIndex = e.NewPageIndex; 
          GridView2.DataSource = ds.Tables["ETOC1"];    
          GridView2.DataBind(); 
        } 最后2句代码不是这样绑定,应该把你最初显示的数据放进一个方法里直接调用
      

  12.   

    建议使用分页控件
    AspNetPager网上搜索很容易搜到的