zoukankan      html  css  js  c++  java
  • 20150301—ASP.NET的Repeater

    Repeater与GridView等数据列表一样,都是用来显示数据库的信息的,其中Repeater是最基本的列表形式,其用法也比较灵活。

    一、Repeater的位置:

    工具箱-数据-Repeater

    image

    拖拽进入页面后的显示:

    image

    切换到源视图会发现他只有两句代码:

    <asp:Repeater ID="Repeater1" runat="server">
    </asp:Repeater>

    其他的格式等需要我们用代码来实现。

    二、Repeater基本列表格式:

    <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate><!--头部列表的标签-->
                    <table>
                    <tr>
                        <td>地名</td>
                        <td>邮编</td>
                        <td>管理</td>
                        <td>删除</td>
                    </tr>
                </HeaderTemplate>
                <ItemTemplate><!--表主题内容标签—>
                    <tr>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate><!--表的脚部标签-->
                    </table>
                </FooterTemplate>
            </asp:Repeater>

    image

    表头需要写入<HeaderTemplate>..</HeaderTemplate>标签中,即表的第一行放在此标签中。

    主要数据放在<ItemTemplate>..</ItemTemplate>标签中,即表的主要数据内容的显示,只需要一行即可,绑定数据后系统会自动生成其他的行。

    表的尾部<FooterTemplate>..</FooterTemplate>标签,尾部注解等。

    三、Repeater的数据绑定。

    需要先在HTML的页面中指定绑定的表的列名

    (还需要创建LINQ to SQL的类,来连接数据库,附数据库表图,只需要类似的表即可)

    image

    使用<%#Eval("列名") %>,格式如下(这里只绑定了两个列):
     

                <ItemTemplate>
                <tr>
                    <td><%#Eval("Name") %></td>
                    <td><%#Eval("PostCode") %></td>
                    <td></td>
                    <td></td>
                </tr>
                </ItemTemplate>


    成功绑定后在设计视图中的显示:

    image

    cs中的代码:

        private DiquDataContext diqu;//外部定义LINQ方便使用
        protected void Page_Load(object sender, EventArgs e)
        {
            diqu = new DiquDataContext();//初始化LINQ
            if (!IsPostBack)//第一次加载时
            {
                BindData();
            }
        }
        //创建了一个数据绑定的方法以方便使用
        public void BindData()
        {
           //按条件查询数据
            var que = from m in diqu.Members where m.ParentId.ToString().Length == 2 select m;//按字符个数确定省级地区
            //绑定数据
            Repeater1.DataSource = que;
           Repeater1.DataBind();
        }

    绑定完成:

    image

    四、Repeater的编辑和删除按钮

    注意:由于无法获取到已显示的repeater的值,所以我们需要在点击上一级或下一级时使用一个Label标签来记录它点击的是哪一行,然后只需要将Label隐藏即可。

    在表格中相应的位置添加LinkButton控件,然后给控件设置 CommandName(为控件设置名字)  CommandArgument(绑定数据,索引)

                <ItemTemplate>
                <tr>
                    <td><%#Eval("Name") %></td>
                    <td><%#Eval("PostCode") %></td>
                    <td>
                        <asp:LinkButton ID="LinkButton_guanli" CommandArgument='<%#Eval("ParentId") %>' CommandName="xiaji" runat="server">下级管理</asp:LinkButton>
                    </td>
                    <td>
                        <asp:LinkButton ID="LinkButton_shanchu" CommandArgument='<%#Eval("ParentId")  OnClientClick='return confirm("确定删除吗?")' %>' CommandName="shanchu" runat="server">删除</asp:LinkButton>
                    </td>
                </tr>
                </ItemTemplate>

    在Repeater控件的属性--事件—ItemCommand(单击Repeater任意按钮时触发),双击自动生成事件

    image

    image

    cs中的代码:

    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            //删除
            if (e.CommandName == "shanchu")//如果点击的是删除按钮
            {//表中ParentId列的数据类型是int
                int code = int.Parse(e.CommandArgument.ToString());
                Members cdata = diqu.Members.Single(r => r.ParentId == code);
                diqu.Members.DeleteOnSubmit(cdata);
                diqu.SubmitChanges();
                binddata();
            }
            //展示下级
            if (e.CommandName == "xiaji")
            {
                int cou = e.CommandArgument.ToString().Length;//获取字符串长度,以判断省市地区的级别
                if (cou == 2)//省或者直辖市为两位数
                {
                    Repeater1.DataSource = null;//清空数据
                    string code = e.CommandArgument.ToString();
                    //按照字符长度并截取字符串进行匹配(搜索的位置是 市)
                    var xia = from m in diqu.Members where m.ParentId.ToString().Length == 4 where m.ParentId.ToString().Substring(0, 2) == code select m;
                    Repeater1.DataSource = xia;
                    Repeater1.DataBind();
                }
                if (cou == 4)//市  为4位数
                {
                    Repeater1.DataSource = null;//清空数据
                    string code = e.CommandArgument.ToString();
                    //按照字符长度并截取字符串进行匹配(搜索的位置是 地区)
                    var xia = from m in diqu.Members where m.ParentId.ToString().Length == 6 where m.ParentId.ToString().Substring(0, 4) == code select m;
                    Repeater1.DataSource = xia;
                    Repeater1.DataBind();
                }
                if (cou == 6)//地区 为6位数,最小级别
                {
                    //弹出提示信息
                    Response.Write("<script>alert('已到最小级别!');</script>");
                }
            }
        }
  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/Tirisfal/p/4307162.html
Copyright © 2011-2022 走看看