• 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>");
                }
            }
        }
  • 相关阅读:
    关于SubSonic3.0查询或更新时出现System.NullReferenceException异常的处理
    SubSonic3.0使用例子
    Hive:ORC File Format存储格式详解
    HiveQL之Sort by、Distribute by、Cluster by、Order By详解
    Hive之import和export使用详解
    手动安装cloudera manager 5.x(tar包方式)详解
    初次安装hive-2.1.0启动报错问题解决方法
    LAMP下安装zabbix流水
    ESXI虚拟机磁盘管理(精简-厚置-精简)
    VMware esxi 5.5装机方案
  • 原文地址:https://www.cnblogs.com/Tirisfal/p/4307162.html
Copyright © 2020-2023  润新知