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 ...
随机推荐
- dsPIC33EP 高速PWM模块初始化设置及应用
//文件 p33pwm6.h #ifndef _P33PWM6_H_ #define _P33PWM6_H_ //#include "p33pwm6.h" #define FSYN ...
- 在Android上使用ZXing识别条形码/二维码
越来越多的手机具备自动对焦的拍摄功能,这也意味着这些手机可以具备条码扫描的功能.......手机具备条码扫描的功能,可以优化购物流程,快速存储电子名片(二维码)等. 本文使用ZXing 1.6实现条码 ...
- 项目源码--JAVA基于LBS地理位置信息应用的服务端
技术要点: 1. LBS应用框架服务端实现 2. JAVA服务端技术 3. MYSQL数据库技术 4. 源码带详细的中文注释 ...... 详细介绍: 1. LBS应用框架服务端实现 此套源码是基 ...
- B. Om Nom and Dark Park
B. Om Nom and Dark Park 在满二叉树上的某些边上添加一些值.使得根节点到叶子节点的路径上的权值和都相等.求最少需要添加多少. 我们利用性质解题. 考察兄弟节点.由于他们从跟节 ...
- 1.5.8 语言分析器(Analyzer)
语言分析器(Analyzer) 这部分包含了分词器(tokenizer)和过滤器(filter)关于字符转换和使用指定语言的相关信息.对于欧洲语言来说,tokenizer是相当直接的,Tokens被空 ...
- GET和POST的主要区别
1.get是从服务器上获取数据,post是向服务器传送数据 2.在客户端上,get通过url提交数据,数据在url上可以看到,post方式,数据放置在HTMLHEADER内提交 3.对于get方式,服 ...
- 经典FormsAuthenticationTicket 分析
Asp.net中基于Forms验证的角色验证授权 Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多, ...
- 【Linux/Ubuntu学习8】unbuntu 下播放swf文件
ubuntu是没有自带swf播放器的,需要自己安装. 这次介绍的这个播放器是gnome环境的. 安装: sudo apt-get install swfdec-gnome
- android refbase类
在Android的源代码中,经常会看到形如:sp<xxx>.wp<xxx>这样的类型定义,这其实是Android中的智能 指针.智能指针是C++中的一个概念,通过基于引用计数的 ...
- 给力的轻量级JavaScript动画框架 - jsMorph
jsMorph 是一个独立的轻量级 JavaScript 动画框架,可以用它来操纵多个 HTML 元素的样式,实现动画效果.此框架会自动检测起始位置.转换单位.调整渲染的速度,以此来获得更流畅的渲染体 ...