ASP.NET Repeater_01_基本用法

Repeater 控件基本用法

<%@ Page Language="C#" %>
 
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
 
    <script runat="server">
   1:  
   2:         protected void Page_Load(object sender, EventArgs e)
   3:         {
   4:             if (!IsPostBack)
   5:             {
   6:                 this.Bind();
   7:             }
   8:         }
   9:         private void Bind()
  10:         {
  11:             DataTable dt = ASPDotNetRepeater.DataSource.CreateDataSource();
  12:             this.Repeater1.DataSource = dt;
  13:             this.Repeater1.DataBind();
  14:  
  15:             this.Repeater2.DataSource = dt;
  16:             this.Repeater2.DataBind();
  17:         }
  18:     
</script>
 
</head>
<body>
    <form id="form1" runat="server">
    <table>
        <tr>
            <td style="width: 200px; vertical-align: top;">
                <table>
                    <asp:Repeater ID="Repeater1" runat="server">
                        <HeaderTemplate>
                            <tr>
                                <td>
                                    数字
                                </td>
                                <td>
                                    平方
                                </td>
                                <td>
                                    立方
                                </td>
                            </tr>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <tr>
                                <td>
                                    <%
   1: # DataBinder.Eval(Container.DataItem, "number")
%>
                                </td>
                                <td>
                                    <%
   1: # DataBinder.Eval(Container.DataItem, "square")
%>
                                </td>
                                <td>
                                    <%
   1: # DataBinder.Eval(Container.DataItem, "cube")
%>
                                </td>
                            </tr>
                        </ItemTemplate>
                        <AlternatingItemTemplate>
                            <tr>
                                <td>
                                    <%
   1: # DataBinder.Eval(Container.DataItem, "number")
%>
                                </td>
                                <td>
                                    <%
   1: # DataBinder.Eval(Container.DataItem, "square")
%>
                                </td>
                                <td>
                                    <%
   1: # DataBinder.Eval(Container.DataItem, "cube")
%>
                                </td>
                            </tr>
                        </AlternatingItemTemplate>
                    </asp:Repeater>
                </table>
            </td>
            <td style="width: 600px; vertical-align: top;">
                <table>
                    <asp:Repeater ID="Repeater2" runat="server">
                        <ItemTemplate>
                            <%
   1: # DataBinder.Eval(Container.DataItem,"number")
%><sup>2</sup>=<%
   1: # DataBinder.Eval(Container.DataItem, "square")
%>
                            ;<%
   1: # DataBinder.Eval(Container.DataItem,"number")
%><sup>3</sup>=<%
   1: # DataBinder.Eval(Container.DataItem, "cube")
%>
                        </ItemTemplate>
                        <AlternatingItemTemplate>
                            <%
   1: # DataBinder.Eval(Container.DataItem,"number")
%><sup>2</sup>=<%
   1: # DataBinder.Eval(Container.DataItem, "square")
%>
                            ;<%
   1: # DataBinder.Eval(Container.DataItem,"number")
%><sup>3</sup>=<%
   1: # DataBinder.Eval(Container.DataItem, "cube")
%>
                        </AlternatingItemTemplate>
                        <SeparatorTemplate>
                            <hr />
                        </SeparatorTemplate>
                    </asp:Repeater>
                </table>
            </td>
        </tr>
    </table>
    </form>
</body>
</html>
自定义类 DataSource

该类中的 CreateEMPDataSource() 方法会在之后的例子使用。

public class DataSource
{
    public static DataTable CreateDataSource()
    {
        DataTable dt = new DataTable("info");
        dt.Columns.Add("number", typeof(int));
        dt.Columns.Add("square", typeof(int));
        dt.Columns.Add("cube", typeof(int));
        for (int i = 1; i <= 50; i++)
        {
            DataRow dr = dt.NewRow();
            dr[0] = i;
            dr[1] = i * i;
            dr[2] = i * i * i;
            dt.Rows.Add(dr);
        }
        return dt;
    }
    public static DataTable CreateEMPDataSource()
    {
        DataSet ds = new DataSet();
        ds.ReadXml(HttpRuntime.AppDomainAppPath + "\\" + "emp.xml");
        return ds.Tables[0];
    }
}
自定义 emp.xml 文件

该XML文件会在之后的例子中使用。

<?xml version="1.0" standalone="yes"?>
<EMPS>
  <EMP>
    <EMPNO>7369</EMPNO>
    <ENAME>SMITH</ENAME>
    <JOB>CLERK</JOB>
    <MGR>7902</MGR>
    <HIREDATE>1980-12-17T00:00:00+08:00</HIREDATE>
    <SAL>800</SAL>
    <DEPTNO>20</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7499</EMPNO>
    <ENAME>ALLEN</ENAME>
    <JOB>SALESMAN</JOB>
    <MGR>7698</MGR>
    <HIREDATE>1981-02-20T00:00:00+08:00</HIREDATE>
    <SAL>1600</SAL>
    <COMM>300</COMM>
    <DEPTNO>30</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7521</EMPNO>
    <ENAME>WARD</ENAME>
    <JOB>SALESMAN</JOB>
    <MGR>7698</MGR>
    <HIREDATE>1981-02-22T00:00:00+08:00</HIREDATE>
    <SAL>1250</SAL>
    <COMM>500</COMM>
    <DEPTNO>30</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7566</EMPNO>
    <ENAME>JONES</ENAME>
    <JOB>MANAGER</JOB>
    <MGR>7839</MGR>
    <HIREDATE>1981-04-02T00:00:00+08:00</HIREDATE>
    <SAL>2975</SAL>
    <DEPTNO>20</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7654</EMPNO>
    <ENAME>MARTIN</ENAME>
    <JOB>SALESMAN</JOB>
    <MGR>7698</MGR>
    <HIREDATE>1981-09-28T00:00:00+08:00</HIREDATE>
    <SAL>1250</SAL>
    <COMM>1400</COMM>
    <DEPTNO>30</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7698</EMPNO>
    <ENAME>BLAKE</ENAME>
    <JOB>MANAGER</JOB>
    <MGR>7839</MGR>
    <HIREDATE>1981-05-01T00:00:00+08:00</HIREDATE>
    <SAL>2850</SAL>
    <DEPTNO>30</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7782</EMPNO>
    <ENAME>CLARK</ENAME>
    <JOB>MANAGER</JOB>
    <MGR>7839</MGR>
    <HIREDATE>1981-06-09T00:00:00+08:00</HIREDATE>
    <SAL>2450</SAL>
    <DEPTNO>10</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7788</EMPNO>
    <ENAME>SCOTT</ENAME>
    <JOB>ANALYST</JOB>
    <MGR>7566</MGR>
    <HIREDATE>1987-04-19T00:00:00+08:00</HIREDATE>
    <SAL>3000</SAL>
    <DEPTNO>20</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7839</EMPNO>
    <ENAME>KING</ENAME>
    <JOB>PRESIDENT</JOB>
    <HIREDATE>1981-11-17T00:00:00+08:00</HIREDATE>
    <SAL>5000</SAL>
    <DEPTNO>10</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7844</EMPNO>
    <ENAME>TURNER</ENAME>
    <JOB>SALESMAN</JOB>
    <MGR>7698</MGR>
    <HIREDATE>1981-09-08T00:00:00+08:00</HIREDATE>
    <SAL>1500</SAL>
    <COMM>0</COMM>
    <DEPTNO>30</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7876</EMPNO>
    <ENAME>ADAMS</ENAME>
    <JOB>CLERK</JOB>
    <MGR>7788</MGR>
    <HIREDATE>1987-05-23T00:00:00+08:00</HIREDATE>
    <SAL>1100</SAL>
    <DEPTNO>20</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7900</EMPNO>
    <ENAME>JAMES</ENAME>
    <JOB>CLERK</JOB>
    <MGR>7698</MGR>
    <HIREDATE>1981-12-03T00:00:00+08:00</HIREDATE>
    <SAL>950</SAL>
    <DEPTNO>30</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7902</EMPNO>
    <ENAME>FORD</ENAME>
    <JOB>ANALYST</JOB>
    <MGR>7566</MGR>
    <HIREDATE>1981-12-03T00:00:00+08:00</HIREDATE>
    <SAL>3000</SAL>
    <DEPTNO>20</DEPTNO>
  </EMP>
  <EMP>
    <EMPNO>7934</EMPNO>
    <ENAME>MILLER</ENAME>
    <JOB>CLERK</JOB>
    <MGR>7782</MGR>
    <HIREDATE>1982-01-23T00:00:00+08:00</HIREDATE>
    <SAL>1300</SAL>
    <DEPTNO>10</DEPTNO>
  </EMP>
</EMPS>
说明

1) Repeater 控件是用 PagedDataSource 绑定数据的。这点比较有意思,通过对 Repeater 控件的使用,你可以了解分页是如何现实的;

2) HeaderTemplate 为表头模板,ItemTemplate 为可重复的项,AlternatingItemTemplate 为可重复的交替项(改变隔行的页面风格),FooterTemplate 为注脚部部分,SeparatorTemplate 在各行之间呈现的元素,比如可以用分行符(<br> 标记)、水平线(<hr> 标记)等。注意 SeparatorTemplate 项不能是数据绑定的;

3) ItemTemplate 为数据源中的每一行都呈现一次的元素。若要显示 ItemTemplate 中的数据,要声明Web 服务器控件,并设置其数据绑定表达式以使其计算为 Repeater控件(即容器控件Container)的 DataSource 中的字段;

4) 在 Page_load 事件里,把数据绑定到 Repeater 控件。本例中创建一个有三列的表,并向表中添加记录,作为Repeater控件的数据源;

5) DataBinder 类提供对应用程序快速开发 (RAD) 设计器的支持以生成和分析数据绑定表达式语法;

6) DataBinder.Eval 方法有三个重载函数,在运行时使用反射来分析和计算对象的数据绑定表达式:

如:使用Eval方法绑定到 Price 字段。

(6) Container 是数据表在内存中的映射。

 

下载 Demo

posted @ 2011-08-30 21:24  船长&CAP  阅读(618)  评论(0编辑  收藏  举报
免费流量统计软件