datalist和datagrid都可以完成同样的功能,为什么还要用repeater

解决方案 »

  1.   

    repeater本身并不带分页功能,你可以参考以下如何在datalist上自己写分页程序。原理是一样的。
      

  2.   

    repeater本身并不带分页功能,你可以参考以下如何在datalist上自己写分页程序。原理是一样的。
      

  3.   

    repeater相比与datagrid应该算是轻量级control吧,使用repeater是不是比datagrid高效一点?GotDotNet Message Board就是使用repeater的
      

  4.   

    repeater相比与datagrid应该算是轻量级control吧,使用repeater是不是比datagrid高效一点?GotDotNet Message Board就是使用repeater的
      

  5.   

    下面是我写的一个Repeater分页的实现代码,你可以参考一下//WebForm1.aspx
    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Work.WebForm2" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm2</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="WebForm2" method="post" runat="server">
    <table>
    <TBODY>
    <tr>
    <td colspan="2">
    <asp:Repeater ID="repeater1" Runat="server">
    <HeaderTemplate>
    <table border="1">
    <tr>
    <td>用户名</td>
    <td>密码</td>
    <td>性别</td>
    </tr>
    </HeaderTemplate>
    <ItemTemplate>
    <tr>
    <td><%# DataBinder.Eval(Container.DataItem,"name") %></td>
    <td><%# DataBinder.Eval(Container.DataItem,"password") %></td>
    <td><%# DataBinder.Eval(Container.DataItem,"sex") %></td>
    </tr>
    </ItemTemplate>
    <FooterTemplate>
    </table>
    </FooterTemplate> </asp:Repeater></TD></TR>
    <tr>
    <td>
    <asp:LinkButton id="lbtnPrevPage" CommandName="prev" OnCommand="Page_OnClick" runat="server">上一页</asp:LinkButton>
    </td>
    <td>
    <asp:LinkButton id="lbtnNextPage" CommandName="next" OnCommand="Page_OnClick" runat="server">下一页</asp:LinkButton>
    </td>
    </tr>
    </TBODY></TABLE>
    </form>
    </body>
    </HTML>//WormForm1.aspx.cs
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;namespace Work
    {
    /// <summary>
    /// WebForm2 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    private int pageCount;//页面总数
    private int pageSize;//每页记录数
    private int recordCount;//记录个数
    private int currentPage;//当前页数 private SqlConnection myConnection;
    private SqlDataAdapter mySqlDataAdapter;
    private DataSet myDataSet; protected System.Web.UI.WebControls.LinkButton lbtnPrevPage;
    protected System.Web.UI.WebControls.Repeater repeater1;
    protected System.Web.UI.WebControls.LinkButton lbtnNextPage;
    private void Page_Load(object sender, System.EventArgs e)
    {
    pageSize=5;
    recordCount = ViewState["RecordCount"]==null ? 0 : (int)ViewState["RecordCount"];
    currentPage = ViewState["CurrentPage"]==null ? 0 :(int)ViewState["CurrentPage"];
    pageCount = ViewState["PageCount"] ==null ? 0 :(int)ViewState["PageCount"];
    // 在此处放置用户代码以初始化页面
    myConnection = new SqlConnection("server=(local)\\NetSDK;Trusted_Connection=yes;database=Test");//Test位自己创建的包含一个member表的SQL数据库
    mySqlDataAdapter = new SqlDataAdapter("select * from member", myConnection);//member为Test数据库中包含name,password,sex字段的一个表
    myDataSet = new DataSet(); if(!IsPostBack)
    {
    mySqlDataAdapter.Fill(myDataSet,"member");
    recordCount = myDataSet.Tables["member"].Rows.Count;
    myDataSet.Tables["member"].Rows.Clear();

    ViewState["CurrentPage"] = 0;
    pageCount = recordCount/pageSize;
    if(pageCount * pageSize <recordCount)pageCount += 1;
    ViewState["PageCount"] = pageCount;
    ViewState["RecordCount"] = recordCount;
    }

    int startIndex = currentPage * pageSize;
    mySqlDataAdapter.Fill(myDataSet,startIndex,pageSize,"member"); this.repeater1.DataSource = myDataSet.Tables["member"].DefaultView;
    // ((DataView)(this.repeater1.DataSource)).
    this.repeater1.DataBind(); lbtnNextPage.Enabled = true;
    lbtnPrevPage.Enabled = true;
    if(currentPage==(pageCount-1)) lbtnNextPage.Enabled = false;
    if(currentPage==0) lbtnPrevPage.Enabled = false;

    } public void Page_OnClick(Object sender,CommandEventArgs e)
    {
    //判断cmd,以判定翻页方向
    switch(e.CommandName)
    {
    case "next":
    if(currentPage<(pageCount-1)) currentPage++;
    break;
    case "prev":
    if(currentPage>0) currentPage--;
    break;
    default:
    // if(e.CommandName != "")
    // currentPage = int.Parse(e.CommandName);
    break;
    } ViewState["CurrentPage"] = currentPage; Page_Load(null,null);
    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion }
    }
      

  6.   

    webform1.aspx的第一行中的Inherits="Work.WebForm2" 请改为Inherits="Work.WebForm1"