asp的recordset有pagesize、pagecount等分页属性,asp.net中dataset怎么没有这样的属性呢?需要分页的时候怎么写呢?请高手指教。

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=B12283DE-DB20-4322-ACCC-12724442808A
      

  2.   

    谢谢楼上,但是我不想用datagrid显示数据啊。我做的是类似留言板的东西,用datagrid显示不好吧。我是想把每条数据填入自制的表格中,但是需要分页。
      

  3.   

    那就用datalist或者Repeat吧,不过分页程序都要自己写的。
      

  4.   

    这个是datalist分页程序
    private void Page_Load(object sender, System.EventArgs e)
    {
         pagesize = 10;
    //显示总页数
    pagecount = getpgcount();
    lbPageCount.Text ="共 "+pagecount.ToString ()+" 页";

    if (!Page.IsPostBack )
    {
      ViewState["pageindex"]=0;
      BindData();
    }
    else
    {
      currentpage=(int)ViewState["pageindex"];
    }

    } #region  数据绑定
    private void BindData()
    {
        string strcon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath ("..//penhui.mdb");
        OleDbConnection con=new OleDbConnection (strcon);
        con.Open ();    string str_sel="SELECT user_tab.username,guestbook_tab.guestid,
    guestbook_tab.zhuti,guestbook_tab.content,guestbook_tab.systime,
    guestbook_tab.recontent FROM guestbook_tab ,user_tab where 
    guestbook_tab.userid = user_tab.userid order by guestbook_tab.systime desc";    OleDbDataAdapter da=new OleDbDataAdapter (str_sel,con);    DataSet ds=new DataSet ();
        da.Fill(ds,(currentpage*pagesize),pagesize,"Guest");

        mylist.DataSource =ds.Tables ["Guest"].DefaultView ;
        mylist.DataBind ();    da.Dispose ();
        con.Close ();}
    #endregion
    //计算总记录数
    protected int rscount()
    {

        string strcon="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("..//penhui.mdb");
        OleDbConnection conn = new OleDbConnection(strcon);
        conn.Open();    string selstr = "select count(*) as icount from guestbook_tab ";
        OleDbCommand com = new OleDbCommand(selstr,conn);
        OleDbDataReader dr = com.ExecuteReader();
        if(dr.Read())
        {
            int icount = Int32.Parse(dr["icount"].ToString());
            lbRecordcount.Text ="共 "+icount.ToString ()+" 条记录";
            dr.Close();
            conn.Close();
            return icount;
        }
        else
        {
            return 0;
         }

    }

    //总页数
    protected int getpgcount()
    {
       int jlcount = rscount();
       int pgcount;
       if(jlcount%pagesize==0)
       {
          pgcount = (jlcount/pagesize);
        }
       else
       {
          pgcount = (jlcount/pagesize) + 1;
        }
       return pgcount;
    }


    //上页
    private void link_pre_Click(object sender, System.EventArgs e)
    {
        currentpage=(int)ViewState["pageindex"];
        if(currentpage>0)currentpage--;
           ViewState["pageindex"]=currentpage;
        BindData();
    }//下页
    private void link_next_Click(object sender, System.EventArgs e)
    {
        currentpage=(int)ViewState["pageindex"];
        if(currentpage<(pagecount-1))currentpage++;
    ViewState["pageindex"]=currentpage;
        BindData();;

    }
      

  5.   

    每页显示记录数 20  
    if(总记录数%20==0)
    {
    页数==总记录数%20
    }
    else 页数=总记录数%20+1分页可以直接用DadaAdapter.Fill()
    其中有一个重载版本,可以确定取出的记录数目从哪开始,取出多少条
      

  6.   

    http://blog.csdn.net/linday/articles/92537.aspxhttp://blog.csdn.net/wellknow/archive/2004/07/29/55167.aspx
      

  7.   

    <form id="Form1" method="post" runat="server">
    <asp:datagrid id="dgOrder" runat="server" Height="515px" Width="718px" AutoGenerateColumns="False" AllowSorting="True" CellPadding="4" BorderWidth="1px" BorderColor="#A0ABEB" PageSize="15" BorderStyle="Solid" BackColor="White" GridLines="Vertical" ForeColor="Black" AllowPaging="True" ShowFooter="True">
    <SelectedItemStyle ForeColor="White" BackColor="Black"></SelectedItemStyle>
    <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
    <HeaderStyle HorizontalAlign="Center" ForeColor="White" BorderColor="#6876C5" BackColor="#6876C5"></HeaderStyle>
    <FooterStyle ForeColor="White" BackColor="#6876C5"></FooterStyle>
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <FONT face="">
    <asp:CheckBox id="Cb" runat="server"></asp:CheckBox></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn DataField="orderid" SortExpression="orderid" HeaderText="ID">
    <HeaderStyle Width="180px"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="ShipCountry" SortExpression="ShipCountry" HeaderText="ShipCountry">
    <HeaderStyle Width="180px"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="ShippedDate" SortExpression="ShippedDate" HeaderText="ShippedDate" DataFormatString="{0:d}">
    <HeaderStyle Width="180px"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="Freight" SortExpression="Freight" HeaderText="Freight">
    <HeaderStyle Width="180px"></HeaderStyle>
    </asp:BoundColumn>
    <asp:BoundColumn DataField="ShipAddress" SortExpression="ShipAddress" HeaderText="ShipAddress">
    <HeaderStyle Width="480px"></HeaderStyle>
    </asp:BoundColumn>
    </Columns>
    <PagerStyle HorizontalAlign="Center" ForeColor="Black" Position="TopAndBottom" BackColor="White" Mode="NumericPages"></PagerStyle>
    </asp:datagrid>
    </form>
      

  8.   

    '得到数据视图,参数为要排序的列
    Private Function GetDv(ByVal strSort As String) As DataView
            '定义数据库连接
            Dim dv As DataView
            Dim CN As New SqlConnection()
            Try
                '初始化连接字符串
                CN.ConnectionString = "data source=pmserver;
                initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;"
                CN.Open()
    '从NorthWind得到orders表的数据
                Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)
                Dim ds As New DataSet()
                adp.Fill(ds)
                '得到数据视图
                dv = ds.Tables(0).DefaultView
            Catch ex As Exception
    #If DEBUG Then
                Session("Error") = ex.ToString()
                Response.Redirect("../error.aspx")        '跳转程序的公共错误处理页面
    #End If
            Finally
                '关闭连接
                CN.Close()
            End Try
            '排序
            dv.Sort = strSort
            Return dv
        End Function    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 
        Handles MyBase.Load
            If Not IsPostBack Then
                ViewState("strSort") = "orderid"
                dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
                dgOrder.DataBind()
            End If
        End Sub
    '排序
        Private Sub dgOrder_SortCommand(ByVal source As Object, 
        ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand
            dgOrder.CurrentPageIndex = 0
       '得到排序的列
            ViewState("strSort") = e.SortExpression.ToString()
            dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
            dgOrder.DataBind()
        End Sub '分页
        Private Sub dgOrder_PageIndexChanged(ByVal source As Object, 
        ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged
       '得到分页的页号
            dgOrder.CurrentPageIndex = e.NewPageIndex
            dgOrder.DataSource = GetDv(ViewState("strSort").ToString())
            dgOrder.DataBind()
        End Sub