• 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=" 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=" 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

  • 相关阅读:
    vuejs 实战 双向数据绑定
    ubuntu16安装cuda,cudnn,gpu版opencv
    ubuntu编译安装nginx并且配置流服务器
    安装使用mongodb
    c++ 编译安装ffmpeg
    apache2 日志文件太大的解决方案
    sql注入
    制作自己的电子词典
    python传递可变参数
    工厂模式
  • 原文地址:https://www.cnblogs.com/liuning8023/p/2160017.html
Copyright © 2020-2023  润新知