我想用datalist制作一个分页,具体要是实现的情况是:
 
   <<  << 1 2 3 4 5 6…… >> >>  共多少页  转到多少页点第一个<<转到首页 点第二个<<向上一页   点数字的时候就转到数字所在的页面,后面同理如果你是高手,如果你做个这样的分页,可以留下你的例子参考参考么????

解决方案 »

  1.   

    <<  << 1 2 3 4 5 6…… >> >>  共多少页  转到多少页这个用链结然后用get取得操作的页数 
    根据操作动态生成sql语句,或是直接利用分页存储过程(如果你没有可以到数据库区搜一下)
    也可以直接用 DataAdapter.Fill()方法的一个重载。来获得要取得的条数
    然后填充DataList参照
    msdn 2003 ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemdatacommondbdataadapterclassfilltopic.htm
      

  2.   

    你的这个问题属于简单的控件应用自已好好想办法处理吧如果真的想不出来去 www.jjshang.com 尚老师的论坛上找一下,有一个例子就是用DataAdapter.Fill()
    这个方法分的页 ,应该很久了
      

  3.   

    你知不知道.NET里面有个控件叫做PagedDataSource?
    去看看msdn吧
      

  4.   

    我操楼主!
    主题不要写得这么嚣张~~~~~~其实新手不一定是不会的~~
    我也不知道我是不是新手~但这个我会....在datagrid里,有一个分页类叫做PagedDataSource,这个类有一些属性是datagrid分页的属性(相信大家都知道datagrid的分页很好)
    //这个类的用法
    PagedDataSource objPage=new PagedDataSource();//定义类
    objPage.DataSource=DataSet;//将已经填充好的dataset放到这个类的datasource里
    objPage.AllowPaging=true;//设置自动分页
    objPage.PageSize=8;//设置记录数
    objPage.CurrentPageIndex=NowPage;//设置当前页数
    this.datalist.DataSource = objPage;//返回给datalist
    this.datalist.DataBind();//这个不用说其实你可能会骂我,这个和你们的主题没有关系....
    但并不是的,只要你把填充好的dataset放到这个类的datasource里,然后就会有一连串的相关属性。
    只要你用用你的脑,就能编出<<  << 1 2 3 4 5 6…… >> >>这个来,我记得以前在vb里我也编过这个东西。如果你觉得自己编麻烦...你可以把datagrid里的那个分页控件也找出来,传说中datagrid里还有很多分页有用的东西
      

  5.   

    (相信大家都知道datagrid的分页很好)这个只能说一般,它还是在靠viewstate在维护最好是自定义分页
      

  6.   

    还未知道答案的时候不要被题目吓倒, 也不要故意将自己不会的东西来吓倒别人.做分页, 不管是datalist, 还是grid还是listbox等来实现数据呈现,
    只要将数据源分页就解决了,
    构思一个数据源分页的方法
    不管点击哪一页,
    传个页码的关键字进来这个方法就行了.
      

  7.   

    自己想。。DATALIST都可以分页了。dotnet.aspx.cc也有代码了。但是只有下一页上一页的功能。要加你要的功能不难,自己弄。。如果你连最基本的代码都看不懂,那么,你可以回家休息去了。
      

  8.   

    是有点吓人,你去Blog.nfzero.tom.com看看,那上面好像有你想要的类似的东西!
      

  9.   

    pageddatasource只是.net自身提供的类而已……用这个实现没啥希奇。传统的实现分页还是比较复杂的,写一个分页函数,再把这些页数用循环写成超链接。
      

  10.   

    看看MSDN的帮助,看了没有再问吧。
      

  11.   

    <%@ import namespace="System"%> 
    <%@ import namespace="System.Data"%>
    <%@ import namespace="System.Data.OleDb"%>
    <%@ import namespace="System.Data.SqlClient"%>
    <%@ import namespace="System.Web.UI"%>
    <%@ import namespace="System.Web.UI.WebControls"%>
    <%@ import namespace="System.Web.UI.HtmlControls"%>
    <%@ import namespace="System.Collections"%>
    <%@ import namespace="System.Web.SEssionState"%>
    <%@ import namespace="System.Configuration"%> 
    <script language="c#" runat="server">  
                    
    OleDbConnection MyConn; 
                    int PageSize,RecordCount,PageCount,CurrentPage,i;
                    ArrayList Al_PageNum;      public void Page_Load(Object src,EventArgs e) 
                 {                 PageSize = 4;               //设定PageSize 
                                            //连接语句 
                    string strcon="provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath"])+";"; 
                    MyConn = new OleDbConnection(strcon); 
                    MyConn.Open();                       
                    if(!Page.IsPostBack)                  //第一次请求执行 
                     { 
     
                       RecordCount = CalculateRecord(); //计算总共有多少记录/
                                         PageCount = RecordCount/PageSize; //计算总共有多少页
                       if (RecordCount%PageSize > 0)     //取整 
                       PageCount = PageCount + 1; 
                       lblPageCount.Text = PageCount.ToString(); 
                       lblRecordCount.Text = RecordCount.ToString(); 
                       ViewState["PageCount"] = PageCount; 
                       CurrentPage = 0; 
                       ViewState["PageIndex"] = 0; 
                       
                       Al_PageNum= new ArrayList();//绑定DROPDOWNLIST
                       for(i=1;i<=PageCount;i++)   //从1开始循环,为了不出现0页码
                       Al_PageNum.Add(i.ToString());
                       Ddl_PageNumber.DataSource=Al_PageNum;
                       Ddl_PageNumber.DataBind();
                       ListBind();                         //绑定 
                     } 
                     MyConn.Close(); 
                    
                 } 
           
           
    protected string FormatString(string str) 

    str=str.Replace(" ","&nbsp;&nbsp;"); 
    str=str.Replace("<","&lt;"); 
    str=str.Replace(">","&gt;"); 
    str=str.Replace('\n'.ToString(),"<br>"); 
    return str; 
    }  public int CalculateRecord()                //计算总共有多少条记录
                    { 
                            int intCount; 
            string strCount = "select count(*) as co from gbook "; 
                            OleDbCommand MyComm = new OleDbCommand(strCount,MyConn); 
                            OleDbDataReader dr = MyComm.ExecuteReader(); 
                            if(dr.Read()) 
                              { 
                                 intCount = Int32.Parse(dr["co"].ToString()); 
                              } 
                            else 
                              { 
                                 intCount = 0; 
                              } 
                            dr.Close(); 
                            return intCount; 
                     } 
                    ICollection CreateSource() 
                    {                         int StartIndex;                               //设定导入的起终地址 
                            StartIndex = CurrentPage*PageSize;            //计算记录数的起始点
                            string strSel = "select * from gbook order by id desc"; 
                            DataSet ds = new DataSet(); 
                            OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn); 
                            MyAdapter.Fill(ds,StartIndex,PageSize,"Score"); 
                            return ds.Tables["Score"].DefaultView; 
                    } 
    public void ListBind() 
                    { 
                            MyList.DataSource = CreateSource(); 
                            MyList.DataBind(); 
                            lbnNextPage.Enabled = true; 
                            lbnPrevPage.Enabled = true; 
                            if(PageCount==0) 
                              { 
                                lblCurrentPage.Text = "0"; 
                                lbnNextPage.Enabled = false; 
                                lbnPrevPage.Enabled = false; 
                              } 
                            else 
                              { 
                                if(CurrentPage==(PageCount-1)) lbnNextPage.Enabled = false; 
                                if(CurrentPage==0) lbnPrevPage.Enabled = false; 
                                lblCurrentPage.Text = (CurrentPage+1).ToString(); 
                              } 
                    }
    public void Page_OnClick(Object sender,CommandEventArgs e) 
                    { 
                            CurrentPage = (int)ViewState["PageIndex"]; 
                            PageCount = (int)ViewState["PageCount"]; 
                            string cmd = e.CommandName;                 //判断cmd,以判定翻页方向 
        
       
                            switch(cmd) 
                             { 
                                case "next": 
                                if(CurrentPage<(PageCount-1)) CurrentPage++; 
                                break; 
                                case "prev": 
                                if(CurrentPage>0) CurrentPage--; 
                                break; 
                              }                         ViewState["PageIndex"] = CurrentPage;                         ListBind();                 } 
                  public void PageNum_SelectIndexChanged(object sender,System.EventArgs e)              {
                   ViewState["PageIndex"] =int.Parse(Ddl_PageNumber.SelectedItem.Value)-1;//保持不出现0页码
                   PageSize = 4;
                   CurrentPage = (int)ViewState["PageIndex"];
                   PageCount = (int)ViewState["PageCount"]; 
                   ListBind(); 
                   //MyList.DataSource = CreateSource(); 
                   //MyList.DataBind(); 
                  }
      

  12.   


                  override protected void OnInit(EventArgs e)
                 {
                   InitializeComponent();
                   base.OnInit(e);
                  }            private void InitializeComponent()
                 {
                  
                   this.Load+=new System.EventHandler(this.Page_Load);
                   this.Ddl_PageNumber.SelectedIndexChanged+=new System.EventHandler(this.PageNum_SelectIndexChanged);
                                }
                 public string test(string str)
                   {
                       string str2="";
                       if(str==String.Empty)
                          {
                           str2="暂无回复";
                          }
                       else
                          {
                           string str3="回复:<br>&nbsp;&nbsp;&nbsp;";
                           
                           str2=str3+str;
                          
                          }
                       return str2;
                   }
           
       /*          for(int i=10;i<20;i++) 
                  {
                   DropDownList1.Items.Add(new ListItem("第"+i.ToString()+"页",i.ToString()));    
                  }  */</script>
    <asp:DataList id="MyList" RepeatColumns="1" runat="server">  <itemtemplate>  <table width="500" border="0" cellpadding="4" cellspacing="1" bgcolor="8c9aa5">
      <tr bgcolor="cecfd6"> 
        <td colspan="2" align="left" bgcolor="#dedbde"><strong>&nbsp; &nbsp; &nbsp; No.<%# DataBinder.Eval(Container.DataItem, "id") %>&nbsp; 
          <%# DataBinder.Eval(Container.DataItem, "title") %></strong>
        </td>
      </tr>
      <tr> 
        <td width="95" rowspan="2" align="center" valign="middle" bgcolor="f7f7f7" class="word"> 
          <table width="95" border="0" cellspacing="0" cellpadding="0" class="table1">
            <tr>
              <td  align="center" valign="top" ><br><image src="<%# DataBinder.Eval(Container.DataItem, "sex_image") %>" border=0 ></td>
            </tr>
            <tr>
              <td  align="center" class="word" ><%# DataBinder.Eval(Container.DataItem, "username") %><br><%# DataBinder.Eval(Container.DataItem, "sex") %></td>
            </tr>
          </table>
        </td>
        <td width="386" height="129" valign="top" bgcolor="f7f7f7" class="word">
               <table width="100%" border="0" cellspacing="0" cellpadding="0">
                   <tr>
                     <td class="word">留言:<Br>&nbsp;&nbsp;&nbsp;<%# DataBinder.Eval(Container.DataItem, "content") %><br><br><Br><BR></td>
                   </tr>
                   <tr>
                     <td width="80%" bgcolor="#c6c3c6" height="1"></td>
                   </tr>
                   <tr>
                     <td class="word"><br><font color=red><%# test(DataBinder.Eval(Container.DataItem, "r_content").ToString()) %><font></FONT><br><br></td>
                   </tr>
               </table>
                
      </td>
      </tr>
      <tr> 
        <td height="22" bgcolor="cecfd6" valign="top"> 
          <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td align="left"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                                  <tr>
                                   <td>IP地址:<%# DataBinder.Eval(Container.DataItem, "ip") %>&nbsp&nbsp&nbsp发表时间:<%# DataBinder.Eval(Container.DataItem, "regdate") %></td>
                                   <td width="15%" align="right"><a href="<%# DataBinder.Eval(Container.DataItem, "website") %>" target="_blank"><img src="img/url.gif" border=0></a>&nbsp;<a href="mailto:<%# DataBinder.Eval(Container.DataItem, "email") %>" target="_blank"><img src="img/email2.gif" border=0></a></td>
                                  </tr>
                               </table>
              </td>
            </tr>
          </table></td>
      </tr>
    </table>
       <br>
      </itemtemplate> 
     
    </asp:DataList>
    <table width="530" border="1" align="center" cellspacing="0" cellpadding="3" bgcolor="#FFFFFF" bordercolor="#C0C0C0" style="border-collapse: collapse">
     <tr> 
          <td align="right" bgcolor="#ECECEC" colspan="2"><asp:LinkButton id="lbnPrevPage" Text="上一页" CommandName="prev" OnCommand="Page_OnClick" runat="server" />
    <asp:LinkButton id="lbnNextPage" Text="下一页" CommandName="next" OnCommand="Page_OnClick" runat="server" />
    共有<asp:Label id="lblRecordCount" ForeColor="red" runat="server" />条记录
    当前为<asp:Label id="lblCurrentPage" ForeColor="red" runat="server" />/<asp:Label id="lblPageCount" ForeColor="red" runat="server" />页&nbsp;&nbsp;<asp:dropdownlist ID="Ddl_PageNumber" runat="server" AutoPostBack="true" CssClass="lanyu"></asp:dropdownlist>
          </td>
          
     </tr></table>你自己改改就能用了,大体是这个意思
      

  13.   

    http://www.webdiyer.com
    用这个控件试试
      

  14.   

    没有什么吗。ASP的时代就解决了。。
      

  15.   

    数据库:test2000.mdb表:numbers字段:Id(自动编号),anumber(数字)
    因为DataGrid控件我们采用直接绑定记录集来显示数据.所以分页处理我们采用了间接的办法,定义另一个记录集objrs,将分页后的记录集付给objrs.然后绑定DataGrid'效果还不错 , 我加了详细地注释?像pagesize, AbsolutePage的用法可参考msdn
    VB中新建工程,form中添加DataGrid控件,按钮cmdPrevious和cmdNext,文本框txtPage'引用microsoft active data object 2.x object libraryOption ExplicitDim conn As ADODB.ConnectionDim lCurrentPage As Long
    Private Sub cmdNext_Click() lCurrentPage = lCurrentPage + 1 Call Loadcontrol(lCurrentPage)End Sub
     Private Sub cmdPrevious_Click() If lCurrentPage > 1 Then lCurrentPage = lCurrentPage - 1 Call Loadcontrol(lCurrentPage)End IfEnd Sub Private Sub Form_Load()  Set conn = New ADODB.Connectionconn.CursorLocation = adUseClient conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test2000.mdb;" lCurrentPage = 1 Call Loadcontrol(lCurrentPage) End SubPrivate Sub Loadcontrol(lPage As Long) Dim adoPrimaryRS As ADODB.Recordset Dim lPageCount As Long Dim nPageSize As IntegerDim lCount As Long '每页显示的纪录 nPageSize = 10 Set adoPrimaryRS = New ADODB.Recordset adoPrimaryRS.Open "select * from numbers", conn, adOpenStatic, adLockOptimistic  adoPrimaryRS.PageSize = nPageSize '页数 lPageCount = adoPrimaryRS.PageCount If lCurrentPage > lPageCount Then lCurrentPage = lPageCount End If  adoPrimaryRS.AbsolutePage = lCurrentPage '定义另一个记录集Dim objrs As New ADODB.Recordset '添加字段名称For lCount = 0 To adoPrimaryRS.Fields.Count - 1 objrs.Fields.Append adoPrimaryRS.Fields(lCount).Name, adVarChar, adoPrimaryRS.Fields(lCount).DefinedSize Next '打开记录集objrs.Open '将指定记录数循环添加到objrs中 For lCount = 1 To nPageSize objrs.AddNew objrs!id = adoPrimaryRS!id objrs!anumber = adoPrimaryRS!anumber adoPrimaryRS.MoveNext Next '绑定 Set DataGrid1.DataSource = objrs  '在文本框显示页数 txtPage = lPage & "/" & adoPrimaryRS.PageCountEnd Sub Private Sub Form_Unload(Cancel As Integer)If Not conn Is Nothing Then conn.CloseEnd If Set conn = NothingEnd Sub‘文本框中输入页数,回车跳转到指定位置Private Sub txtPage_KeyDown(KeyCode As Integer, Shift As Integer) lCurrentPage = Val(txtPage.Text) Call Loadcontrol(lCurrentPage)End Sub