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 == 2 select m;//按字符个数确定省级地区 //绑定数据 Repeater1.DataSource = que; Repeater1.DataBind(); }
绑定完成:
四、Repeater的编辑和删除按钮
在表格中相应的位置添加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") %>‘ 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 == 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>"); } } }
时间: 2024-11-07 03:19:04