20150301—ASP.NET的Repeater
Repeater与GridView等数据列表一样,都是用来显示数据库的信息的,其中Repeater是最基本的列表形式,其用法也比较灵活。
一、Repeater的位置:
工具箱-数据-Repeater
拖拽进入页面后的显示:
切换到源视图会发现他只有两句代码:
<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>
表头需要写入<HeaderTemplate>..</HeaderTemplate>标签中,即表的第一行放在此标签中。
主要数据放在<ItemTemplate>..</ItemTemplate>标签中,即表的主要数据内容的显示,只需要一行即可,绑定数据后系统会自动生成其他的行。
表的尾部<FooterTemplate>..</FooterTemplate>标签,尾部注解等。
三、Repeater的数据绑定。
需要先在HTML的页面中指定绑定的表的列名
(还需要创建LINQ to SQL的类,来连接数据库,附数据库表图,只需要类似的表即可)
使用<%#Eval("列名") %>,格式如下(这里只绑定了两个列):
- <ItemTemplate>
- <tr>
- <td><%#Eval("Name") %></td>
- <td><%#Eval("PostCode") %></td>
- <td></td>
- <td></td>
- </tr>
- </ItemTemplate>
成功绑定后在设计视图中的显示:
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 == select m;//按字符个数确定省级地区
- //绑定数据
- Repeater1.DataSource = que;
- Repeater1.DataBind();
- }
绑定完成:
四、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任意按钮时触发),双击自动生成事件
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 == )//省或者直辖市为两位数
- {
- Repeater1.DataSource = null;//清空数据
- string code = e.CommandArgument.ToString();
- //按照字符长度并截取字符串进行匹配(搜索的位置是 市)
- var xia = from m in diqu.Members where m.ParentId.ToString().Length == where m.ParentId.ToString().Substring(, ) == code select m;
- Repeater1.DataSource = xia;
- Repeater1.DataBind();
- }
- if (cou == )//市 为4位数
- {
- Repeater1.DataSource = null;//清空数据
- string code = e.CommandArgument.ToString();
- //按照字符长度并截取字符串进行匹配(搜索的位置是 地区)
- var xia = from m in diqu.Members where m.ParentId.ToString().Length == where m.ParentId.ToString().Substring(, ) == code select m;
- Repeater1.DataSource = xia;
- Repeater1.DataBind();
- }
- if (cou == )//地区 为6位数,最小级别
- {
- //弹出提示信息
- Response.Write("<script>alert('已到最小级别!');</script>");
- }
- }
- }
20150301—ASP.NET的Repeater的更多相关文章
- asp.net中Repeater控件用法笔记
大家可能都对datagrid比较熟悉,但是如果在数据量大的时候,我们就得考虑使用 repeater作为我们的数据绑定控件了.Repeater控件与DataGrid (以及DataList)控件的主要区 ...
- asp控件Repeater运用
双层repeater嵌套 <asp:Repeater ID="rpt_dataRepeatgroup" runat="server" OnItemData ...
- Asp.Net:Repeater 详情 备用
页面 repeator就想for循环一样,没有编辑模板,有删除delete和详情detail模板 <%@ Page Language="C#" AutoEventWireup ...
- ASP.NET(C#)--Repeater中生成“序号”列
需求介绍:在Repeater(Table)中加入“序号”列,从1开始自增,步长为1. 思路:因为“序号”跟Repeater的行号有关,所以要在Repeater的ItemDataBound事件中输出“序 ...
- asp.net:repeater嵌套(常用于新闻等在首页归类显示)
using System;using System.Configuration;using System.Collections.Generic;using System.Linq;using Sys ...
- asp.net关于Repeater控件中的全选,批量操作
今天在Repeater控件中碰到一个全选的操作,于是上网查了一下,找到一个觉得比较好,便记录下来, 界面代码简化之后(全选操作): <script type="text/javascr ...
- asp.net 将repeater上数据导出到excel
1,首先得到一个DataTable public DataTable GetTable(string sql) { SqlConnnection con=new SqlConnection(Confi ...
- asp.net中Repeater结合js实现checkbox的全选/全不选
前台界面代码: <input name="CheckAll" type="checkbox" id="CheckAll" value= ...
- 自己写的一个ASP.NET服务器控件Repeater和GridView分页类
不墨迹,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
随机推荐
- 【JavaScript】页面加载性能优化
核心在于:减少加载时间 1.减少请求次数 2.缩减文件大小 3.异步加载---------------------->比如document.write 4.延迟加载.动态加载---------- ...
- iis7负载均衡
Windows平台分布式架构实践 - 负载均衡(下) Windows平台分布式架构实践 - 负载均衡 Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微 ...
- Microsoft Robotics Developer Studio 4
Microsoft Robotics Developer Studio 4 Share Language: English Download Microsoft® Robotics ...
- ubuntu在xampp下安装memcache扩展
sudo wget http://pecl.php.net/get/memcache-2.2.1.tgz sudo tar vxzf memcache-2.2.1.tgz cd memcache-2. ...
- 40多个关于人脸检测/识别的API、库和软件
英文原文:List of 40+ Face Detection / Recognition APIs, libraries, and software 译者:@吕抒真 译文:链接 自从谷歌眼镜被推出以 ...
- scala目录
1. 使用Scala(构建这样一个应用,它会取回一份列表,其中包括用户持有的股票的代码以及股份,并告知他们在当前日期为止的这些投资的总价.这包含了几件事:获取用户输入.读文件.解析数据.写文件.从We ...
- EF 预热
由于EF第一次加载比较慢,所以要对EF进行一次初始化的加载,类似第一次打开网页很慢,但第二次打开都很快了的原理一样:第一次把所有静态的图片和JS缓存到本地了:当第二次打开的时候都不需要再去下载这些东西 ...
- 给大家普及一下CPU和SOC的基本知识,好让大家在盲目喝彩做出基本的判断
转载:http://bbs.tianya.cn/post-worldlook-544367-1.shtml 目前,华为推出了自己的四核手机,用自己的SOC,所以很多不明就里的人开始嚷嚷国产处理器的骄傲 ...
- java 经典题
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问 ...
- [Android]天气App 2 项目搭建
对于天气App,为了简化一些功能,暂时模仿MUUI系统提供的那个App. 本项目需要引入本人经常使用的一个工具库DroidTool,这个是本人根据工作中,收集到一些工具类,下载地址. ...