如题:我自己定义的Gridwiew也就是说绑定的数据源DataSet是自己定义的(不是查询数据库生成的),我要将 AspNetPager绑定到GridView中。
当DataSet是查询数据库生成的时候很简单:DataSet mySet = new DataSet();
  mySet = CurrentCon.GetDsSetPaging(sql, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "temptbl");
gridView.DataSource = mySet.Tables["temptbl"];CurrentCon.GetDsSetPaging方法: public static DataSet GetDsSetPaging(string Sql,int startRecord,int MaxRecord,string srcTable)
        {
            DataSet Ds = new DataSet();
            try
            {
                OleDbDataAdapter DA = new OleDbDataAdapter(Sql, GetConnection());
                DA.Fill(Ds, startRecord, MaxRecord, srcTable);
            }
            catch (System.Exception e)
            {
                throw new System.Exception(e.Message.ToString(), e);
            }
            return Ds;
        }
这样就可以实现,这里关键的是MYset是用SQL查询出来的,下面 我自己定义的DataSet怎么实现这个功能呢!

解决方案 »

  1.   

    DataSet不能分页,分页是你自己处理,gridview不是支持分页吗,当然也可以自己做分页,指定每页的数量,然后得到总计录数,从而得到页数,翻页时,取指定范围的记录
      

  2.   

    DataSet不能分页,分页是你自己处理
      

  3.   

    不建议DataSet和GridView配合分页,实际上,这两种分页是在内存里做的,数据量读的过大,内存是否支撑得住呢。所以还是建议在读取数据的同时就计算好,我需要的是什么数据,显示出来就OK了
      

  4.   

    我们自己做的都是自己写的分页SQL。因为现在只有分页SQL才能更好的实现分页的效果,当然,如果你查询出来的数据不是很多的话是看不出来效果的。如果数据量大的话那查询出来就比较费时间了。所以我介意使用分页SQL来实现。
      

  5.   

            PagedDataSource pds = new PagedDataSource();
            pds.AllowPaging = true;
            pds.DataSource = table.DefaultView;
            pds.PageSize = AspNetPager1.PageSize;
            pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
      

  6.   

    建议使用ASPxGridView 你面自带分页功能  默认为显示五行的  
    不过GridView好像也可以实现分页的  绑定数据源后 他可以添加删除 修改更能  你看看那下面有没有分页方面的功能
      

  7.   

    微软提供的控件就可以分页呀,再要不就SQL语句写分页
      

  8.   

    这个问题不是我想用分页SQL就能用的 我的意思是:我在GridView中的数据不是在一张表中查询到的,我是把从多张表中查询到的数据拼成一个DataSet的,然后再把GridView的数据源绑定到这个DateSet中。
    不过还是谢谢,我自己重写了一个利用DataSet分页的方法。问题解决 在这里跟大家分享://参数名称oldDataSet是我在前台拼接的,pageindex是显示的第几页,startRecord开始的数目,MaxRecord每页最大显示的数目,rowName下面重新命名table的名字
     public static DataSet DsToNewDsSetPaging(DataSet oldDataSet, int pageindex, int startRecord, int MaxRecord, string[] rowName)
            {
                DataSet newDataSet = new DataSet();
                DataTable table = new DataTable();
               
                try
                {
                    int pageCount;
                    int oldLen = oldDataSet.Tables[0].Rows.Count;
                    pageCount = oldLen / MaxRecord + 1;
                    int oldCum = oldDataSet.Tables[0].Columns.Count;
                    for (int j = 0; j < oldCum; j++)
                    {
                        DataColumn column = new DataColumn();
                        column.DataType = System.Type.GetType("System.String");
                        column.ColumnName = rowName[j];
                        table.Columns.Add(column);
                    }
                    if (pageindex < pageCount)
                    {
                        for (int i = startRecord * (pageindex - 1); i < MaxRecord; i++)
                        {
                            DataRow row = table.NewRow();
                            for (int t = 0; t < oldCum; t++)
                            {
                                row[t] = oldDataSet.Tables[0].Rows[i][t].ToString();
                            }
                            table.Rows.Add(row);
                        }
                        newDataSet.Tables.Add(table);
                    }
                    else
                    {
                        for (int i = startRecord * (pageindex - 1); i < (oldLen % MaxRecord) + startRecord * (pageindex - 1); i++)
                        {
                            DataRow row = table.NewRow();
                            for (int t = 0; t < oldCum; t++)
                            {
                                row[t] = oldDataSet.Tables[0].Rows[i][t].ToString();
                            }
                            table.Rows.Add(row);
                        }
                        newDataSet.Tables.Add(table);
     
                    }
                }
                catch (Exception ee)
                {
                    throw new System.Exception(ee.Message.ToString(), ee);
                }
                return newDataSet;
            }
    这个是就根据前台自由拼接的DataSet作为数据源实现分页的代码
      

  9.   

    这个问题不是我想用分页SQL就能用的 我的意思是:我在GridView中的数据不是在一张表中查询到的,我是把从多张表中查询到的数据拼成一个DataSet的,然后再把GridView的数据源绑定到这个DateSet中。
    不过还是谢谢,我自己重写了一个利用DataSet分页的方法。问题解决 在这里跟大家分享://参数名称oldDataSet是我在前台拼接的,pageindex是显示的第几页,startRecord开始的数目,MaxRecord每页最大显示的数目,rowName下面重新命名table的名字
     public static DataSet DsToNewDsSetPaging(DataSet oldDataSet, int pageindex, int startRecord, int MaxRecord, string[] rowName)
            {
                DataSet newDataSet = new DataSet();
                DataTable table = new DataTable();
               
                try
                {
                    int pageCount;
                    int oldLen = oldDataSet.Tables[0].Rows.Count;
                    pageCount = oldLen / MaxRecord + 1;
                    int oldCum = oldDataSet.Tables[0].Columns.Count;
                    for (int j = 0; j < oldCum; j++)
                    {
                        DataColumn column = new DataColumn();
                        column.DataType = System.Type.GetType("System.String");
                        column.ColumnName = rowName[j];
                        table.Columns.Add(column);
                    }
                    if (pageindex < pageCount)
                    {
                        for (int i = startRecord * (pageindex - 1); i < MaxRecord; i++)
                        {
                            DataRow row = table.NewRow();
                            for (int t = 0; t < oldCum; t++)
                            {
                                row[t] = oldDataSet.Tables[0].Rows[i][t].ToString();
                            }
                            table.Rows.Add(row);
                        }
                        newDataSet.Tables.Add(table);
                    }
                    else
                    {
                        for (int i = startRecord * (pageindex - 1); i < (oldLen % MaxRecord) + startRecord * (pageindex - 1); i++)
                        {
                            DataRow row = table.NewRow();
                            for (int t = 0; t < oldCum; t++)
                            {
                                row[t] = oldDataSet.Tables[0].Rows[i][t].ToString();
                            }
                            table.Rows.Add(row);
                        }
                        newDataSet.Tables.Add(table);
     
                    }
                }
                catch (Exception ee)
                {
                    throw new System.Exception(ee.Message.ToString(), ee);
                }
                return newDataSet;
            }
    这个是就根据前台自由拼接的DataSet作为数据源实现分页的代码
      

  10.   

    这个问题不是我想用分页SQL就能用的 我的意思是:我在GridView中的数据不是在一张表中查询到的,我是把从多张表中查询到的数据拼成一个DataSet的,然后再把GridView的数据源绑定到这个DateSet中。
    不过还是谢谢,我自己重写了一个利用DataSet分页的方法。问题解决 在这里跟大家分享://参数名称oldDataSet是我在前台拼接的,pageindex是显示的第几页,startRecord开始的数目,MaxRecord每页最大显示的数目,rowName下面重新命名table的名字
     public static DataSet DsToNewDsSetPaging(DataSet oldDataSet, int pageindex, int startRecord, int MaxRecord, string[] rowName)
            {
                DataSet newDataSet = new DataSet();
                DataTable table = new DataTable();
               
                try
                {
                    int pageCount;
                    int oldLen = oldDataSet.Tables[0].Rows.Count;
                    pageCount = oldLen / MaxRecord + 1;
                    int oldCum = oldDataSet.Tables[0].Columns.Count;
                    for (int j = 0; j < oldCum; j++)
                    {
                        DataColumn column = new DataColumn();
                        column.DataType = System.Type.GetType("System.String");
                        column.ColumnName = rowName[j];
                        table.Columns.Add(column);
                    }
                    if (pageindex < pageCount)
                    {
                        for (int i = startRecord * (pageindex - 1); i < MaxRecord; i++)
                        {
                            DataRow row = table.NewRow();
                            for (int t = 0; t < oldCum; t++)
                            {
                                row[t] = oldDataSet.Tables[0].Rows[i][t].ToString();
                            }
                            table.Rows.Add(row);
                        }
                        newDataSet.Tables.Add(table);
                    }
                    else
                    {
                        for (int i = startRecord * (pageindex - 1); i < (oldLen % MaxRecord) + startRecord * (pageindex - 1); i++)
                        {
                            DataRow row = table.NewRow();
                            for (int t = 0; t < oldCum; t++)
                            {
                                row[t] = oldDataSet.Tables[0].Rows[i][t].ToString();
                            }
                            table.Rows.Add(row);
                        }
                        newDataSet.Tables.Add(table);
     
                    }
                }
                catch (Exception ee)
                {
                    throw new System.Exception(ee.Message.ToString(), ee);
                }
                return newDataSet;
            }
    这个是就根据前台自由拼接的DataSet作为数据源实现分页的代码
      

  11.   

    既然dateset只是拼接,就不分了。直接在dateview里分就好了啊