这个Dino Esposito讲关于datagrid自定分页的存储过程,但是它返回多个记录集,问题如果我用SqlDataReader来读的话怎样把多个记录集合并为一个记录集,或都DataSet都可以,这样datagrid就可以直接设置数据源
if exists(select * from sysobjects where name='FetchEmployeesByPage' and type='P')
Drop Procedure FetchEmployeesByPage
GoCreate proc FetchEmployeesByPage(
    @PageIndex smallint,@RecordsPerPage smallint
)
As
    -- @PageIndex,页面索引
    -- @RecordsPerPage,每页的记录数
    Declare @MyIndex smallint
    Declare @FirstRecPos smallint
    Set @FirstRecPos = (@PageIndex-1) * @RecordsPerPage + 1    --cursor
    Declare employees_cursor scroll cursor for
    select * from tbproducts    --open cursor
    open employees_cursor    --fetch the first record
    fetch absolute @FirstRecPos From employees_cursor    --
    set @MyIndex = 1
    while @@FETCH_STATUS = 0 and @myIndex < @RecordsPerPage
    Begin
        fetch next from employees_cursor
        set @MyIndex = @MyIndex + 1
    End    Close employees_cursor
    deallocate employees_cursor
GO

解决方案 »

  1.   

    请帮忙写个代码,让一个datagrid可以直接加载数据源
    <asp:datagrid id="dg" runat="server">
    </asp:datagrid>
    <script language="c#" runat-"server">
    void LoadData()
    {
        ...
        //...
    }
    </script>
      

  2.   

    如果多个记录集的结构相同,可以在dataset里合并为一个dataset的
      

  3.   

    自己解决了,看来靠别人还是不行啊,呵呵,代码贴出来:
    public DataTable ConvertMultiRecordsToTable(DataTable dt,SqlDataReader dr,int RecordsNumber)
        {
            for(int i=0;i<dr.FieldCount;i++)
            {
                DataColumn myColumn = new DataColumn();
                myColumn.DataType = dr.GetFieldType(i);
                myColumn.ColumnName = dr.GetName(i);
                dt.Columns.Add(myColumn);
            }
            DataRow myRow;
            for(int j=0;j<RecordsNumber;j++)
            {
                dr.Read();
                myRow = dt.NewRow();
                for(int i=0;i<dr.FieldCount;i++)
                myRow[i]=dr.GetValue(i);
                dt.Rows.Add(myRow);
                dr.NextResult();
            }
            return dt;
        }
    将有多个记录集的datareader转成datatable 这样datagrid就可以直接绑定了