用户有多张图片,用过首页点击一张图片我取到了用户所有的信息包括他上传的图片,我用的DATALIST进行绑定,可是DATALIST无法排序,我无法显示用户从首页点击的那张图片,只能从第一张开始分页,这个地方应该怎么做啊,如果不能用DATALIST进行分页,提示一下我要用什么方法

解决方案 »

  1.   

    使用集合对象吧  List<object>  支持很多算法。 使用Repeater实现分页功能自己扩展一个就OK。比如将图片显示封装到用户控件:<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ItemComments.ascx.cs" Inherits="ItemComments" %>
    <asp:Repeater ID="rptComments" runat="server">
     <ItemTemplate>
       时间:<%#(Container.DataItem as Comment).Createtime.ToString() %><br />
       内容:<%#(Container.DataItem as Comment).Content %>
     </ItemTemplate>
     <SeparatorTemplate>
     <hr />
     </SeparatorTemplate>
     <FooterTemplate>
     <hr />
     </FooterTemplate>
    </asp:Repeater>
    <% if (this.PageIndex > 1)
       {%>
        <a href="ViewItem.aspx?page=<%= this.PageIndex - 1 %>" title="上一页">上一页</a>&nbsp;&nbsp;
     <%} %>
     <%if(this.PageIndex * this.PageSize < this.TotalCount)
       { %>
       <a href="ViewItem.aspx?page=<%= this.PageIndex + 1 %>" title="下一页">下一页</a>&nbsp;&nbsp;
     <%} %>--------------------------protected void Page_Load(object sender, EventArgs e)
        {
            this.PageSize = 5;
        }    private int pageIndex;
        public int PageIndex
        {
            get { return pageIndex; }
            set { pageIndex = value; }
        }    private int pageSize;
        public int PageSize
        {
            get { return pageSize; }
            set { pageSize = value; }
        }
        private int m_totalCount;
        public int TotalCount
        {
            get { return m_totalCount; }
        }    protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            this.rptComments.DataSource = Comment.GetComments(PageSize, this.PageIndex, out this.m_totalCount);
            this.rptComments.DataBind();
        }然后将上面的用户控件添加到ViewItem.aspx中并实现自定义分页处理:public partial class ViewItem : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.ItemComments.PageIndex = this.PageIndex;
        }    protected int PageIndex
        {
            get
            {
                int result = 0;
                Int32.TryParse(this.Request.QueryString["page"], out result);
                return result > 0 ? result : 1;
            }
        }
    }
      

  2.   

    你将ItemTemplate里的换为你要显示的数据就OK。
      

  3.   

    用户点击的那个图片,对应一个索引,你根据这个索引算一下这个图片应该排到多少页,然后跳到那一页至于分页用什么其实都可行的,但不要直接绑定,直接绑定不方便取某一页并跳转
    Private Sub GuestBookList()
            Dim objTmp As New PagedDataSource            '实例化一个分页数据源
            Dim myPagesize As Integer = 5                '每页记录数
            Dim CurrPage As Integer                      '当前页码
            Dim TotalRecord As Integer                   '总记录数
            Dim myPagename As String                     '当前网页名称        objTmp.DataSource = myDB.GetTab("select * from Guestbook order by ID desc").DefaultView
            objTmp.AllowPaging = True                    '允许分页
            objTmp.PageSize = myPagesize                 '定义每页记录数        TotalRecord = objTmp.DataSourceCount
            CurrPage = Request("Page")
            If CurrPage = vbNullString OrElse IsNumeric(CurrPage) = False Then
                CurrPage = 1
            Else
                CurrPage = Convert.ToInt32(CurrPage)
            End If
            objTmp.CurrentPageIndex = CurrPage - 1        myPagename = Request.CurrentExecutionFilePath
            PageStr = myDB.PageString(myPagesize, TotalRecord, CurrPage, myPagename, "")        GBList.DataSource = objTmp
            GBList.DataBind()
        End Sub
      

  4.   

    至于分页,见下面两篇文章:
    用AjaxPro实现无刷新翻页效果及数据库分页技术介绍
    题外话:经不住一些朋友的一再要求,一气写了这么几篇Ajax方面的文章,这其中大部分代码都是从我的项目中摘取出来的,不过为了演示整个程序的框架结构,所以在演示程序代码里不会有大量与实际相关的业务逻辑处理,但是这并不妨碍你利用这些理论做出复杂的、完善的应用。一、数据库分页理论在实际项目中经常会遇到一个表里有几K、几M以上的数据,而呈现给用户时并不会一下子都显示出来,所以都是分批展示给用户,这样一来可以减小网络传输量,二来也减轻服务器压力。本文展示了在数据库中如何实现分页,如何利用AjaxPro实现无刷新分页。asp.net夜话之七:ADO.NET介绍
    ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
    本篇中还讲述了自定义分页在数据库层的理论。