repeater控件的使用方法,内部控件值的取得和控制,以及分页和对指定id号的获得
当你在看repeater控件的时候相信你已经有相当的基础了,但是我们还是先来看看repeater的基本的知识吧。
Repeater没有默认外观,它完全使用模板来控制。这些模板实质包括各种模板元素中列出的HTML代码片段和.NET服务器控件。Repeater这类模板控件使用绑定表达式绑定数据,格式:<%# Eval("字段")%>
例:
头部
<HeaderTemplate>
<TABLE border="1"><TR><TD>用户名</TD><TD>年龄</TD></TR>
</HeaderTemplate>
重复项
<ItemTemplate>
<TR>
<TD><%# ((DataRowView)Container.DataItem)["username"] %></TD>
<TD><%# ((DataRowView)Container.DataItem)["age"] %></TD>
</TR>
</ItemTemplate>
尾部
<FooterTemplate>
</TABLE>
</FooterTemplate>
C#部分:private void Page_Load(object sender, System.EventArgs e)
{
// 创建数据集
DataSet ds = new DataSet();
// 添加表格
DataTable tbl = ds.Tables.Add("mytable");
// 添加字段
tbl.Columns.Add("username");
tbl.Columns.Add("age", typeof(int));
// 添加新行
DataRow row = tbl.NewRow();
row["username"] = "小王";
row["age"] = 28;
tbl.Rows.Add(row);
row = tbl.NewRow();
row["username"] = "小郭";
row["age"] = 27;
tbl.Rows.Add(row);
// 给Repeater控件设置数据源并进行数据绑定
Repeater1.DataSource = tbl.DefaultView; // ds.Tables[0].DefaultView;
Repeater1.DataBind();
}
下面给出一个小妹最近做的一个系统的部分有关于repeater的内容,希望对大家有所帮助:
前台的代码如下:(为了清晰和对初学者一个全面的帮助,给出全部的代码)大牛绕道
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MgMsgBoard.aspx.cs" Inherits="CompanyManage_MgMsgBoard" ValidateRequest="false" EnableEventValidation="false" %><%@ Import Namespace="System.Data" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>无标题页</title> <link href="../css/Msg_Board.css" rel="stylesheet" type="text/css" /> <link href="css/option0.css" rel="stylesheet" type="text/css" /> <style type="text/css"> .hidden { width: 490px; margin-left: 100px; border-style: solid; border-width: 10px; border-color: #FFFFE1; } .LinkReply { float: right; margin-right: 50px; cursor: pointer; } </style> <script type="text/javascript" language="javascript">function Hidden(){var Str=lWord.style.display;if(Str=="none"){lWord.style.display="inline";}else if(Str=="inline"){lWord.style.display="none";}} </script></head><body> <form id="form1" runat="server"> <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" height="25"> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td class="td5" nowrap> </td> <td class="td2" id="viewinfo" style="cursor: pointer" onclick="my('viewinfo','hint');" align="center" nowrap> 查看/回复留言<%=rMsg %> </td> <td class="td8" nowrap> </td> </tr> </table> </td> </tr> <tr> <td valign="top" height="27"> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="27" class="td4" nowrap> <span id="hint" class="td7"><strong>查看/回复留言</strong></span> </td> <td class="td6" nowrap> </td> </tr> </table> </td> </tr> <tr> <td height="27"> </td> </tr> </table> <asp:Repeater ID="Repeater_Msg_Board" runat="server" OnItemDataBound="Repeater_Msg_Board_ItemDataBound"> <HeaderTemplate> <div class="wrap"> <!--<table width="960" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="tableTop" onclick="Hidden();"> 留下您的宝贵建议吧 </td> </tr> </table> <div id="words" style="width: 970px; display: inline;"> <iframe id="Iframe1" runat="server" src="CompanyManage/lWords.aspx" frameborder="0" width="970px" height="260px"></iframe> </div> --> </HeaderTemplate> <ItemTemplate> <div class="message"> <div class="Title"> <div class="head_img"> <a href="/lgq_0714"> <img src="../images/Msg_tipic.png" alt="lgq_0714" height="75" width="75" /></a> </div> <div class="message_title"> <ul> <li><span class="user">楼主:<%#((DataRowView)Container.DataItem)["UserName"]%></span> <span class="tpic"> <%#((DataRowView)Container.DataItem)["LeaveTime"]%>留言</span> <span class="LinkReply"> <!--<asp:HyperLink ID="Reply" runat="server" Text="回复"></asp:HyperLink>--> </span> <li> <%#((DataRowView)Container.DataItem)["Message"]%></li> <!--<li style="display:none"><asp:Label ID="MBID" runat="server" Text='<%#((DataRowView)Container.DataItem)["ID"]%>'></asp:Label></li>--> </ul> </div> </div> <div class="clear"> </div> <asp:Repeater ID="Repeater_Msg_Reply" runat="server" DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myreleation") %>'> <ItemTemplate> <div class="reply"> <div class="reply_img"> <a href="/yinyuan1987"> <img src="../images/Msg_rply.jpg" alt="yinyuan1987" height="50px" width="50px" /></a> </div> <div class="message_reply"> <ul> <li><span class="user"> <%#((DataRow)Container.DataItem)["rUserName"]%> </span><span class="tpic"> <%#((DataRow)Container.DataItem)["rLeaveTime"]%>回复</span></li> <li> <%#((DataRow)Container.DataItem)["rMessage"]%></li> </ul> </div> </div> </ItemTemplate> </asp:Repeater> <div class="hidden" id="lWord"> <div> <asp:TextBox ID="rMessage" runat="server" TextMode="MultiLine" Width="100%" Height="50px" BorderColor="#E4F4FC" BorderStyle="Solid" BorderWidth="2px"></asp:TextBox> </div> <div> <asp:Button ID="bReply" CommandArgument='<%#((DataRowView)Container.DataItem)["ID"]%>' runat="server" Text="回 复" OnClick="bReply_Click" /> </div> </div> </div> </ItemTemplate> <FooterTemplate> </div> <table width="100%"> <tr> <td style="font-size: 12pt; color: #0099ff; background-color: #e6feda; text-align: right; padding-right: 30px;"> 共<asp:Label ID="lblpc" runat="server" Text="Label"></asp:Label>页 当前为第 <asp:Label ID="lblp" runat="server" Text="Label"></asp:Label>页 <asp:HyperLink ID="hlfir" runat="server" Text="首页"></asp:HyperLink> <asp:HyperLink ID="hlp" runat="server" Text="上一页"></asp:HyperLink> <asp:HyperLink ID="hln" runat="server" Text="下一页"></asp:HyperLink> <asp:HyperLink ID="hlla" runat="server" Text="尾页"></asp:HyperLink> 跳至第 <asp:DropDownList ID="ddlp" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlp_SelectedIndexChanged"> </asp:DropDownList> 页 </td> </tr> <tr> <td style="height: 1px; width: 100%;"> </td> </table> <hr style="color: #FD5800; height: 1px; width: 100%" /> </FooterTemplate> </asp:Repeater> </form></body></html>
后台代码如下:
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using DataSetExclusiveNewsTableAdapters;using System.Data.SqlClient;public partial class CompanyManage_MgMsgBoard : System.Web.UI.Page{ protected int Msg_CmpId; protected string rMsg;//显示的是回复的内容 protected string Admin; protected void Page_Load(object sender, EventArgs e) { if (Session["Companyusername"].ToString() == null) { Response.Write("<script language='javascript'>alert('非法操作,请先登录!');location.href = 'CompanyLogin.aspx';</script>"); } else { Admin = Session["Companyusername"].ToString(); var id = new T_ExclusiveTableAdapter().SelectIdByAdmin(Admin); Msg_CmpId = Convert.ToInt32(id); if (Msg_CmpId == 0) { Response.Write("<script language='javascript'>alert('没有该单位的信息。');location.href='CompanyLogin.aspx';</script>"); } else if (!IsPostBack) { this.Repeater_Msg_Board.DataSource = bindData(); this.Repeater_Msg_Board.DataBind(); } } } //数据绑定 protected PagedDataSource bindData() { string connStr = ConfigurationManager.ConnectionStrings["WebSetConnectionString"].ConnectionString; DataSet ds = new DataSet(); //连接数据库 SqlConnection conn = new SqlConnection(connStr); //获取主表中的数据插入DataSet中去 SqlDataAdapter dap = new SqlDataAdapter("select * from T_MessageBoard where CompanyId=" + Msg_CmpId + "order by LeaveTime desc", conn); dap.Fill(ds, "MB"); SqlDataAdapter dap1 = new SqlDataAdapter("select * from T_Reply order by rLeaveTime asc", conn); dap1.Fill(ds, "Reply"); DataRelation l_relation = new DataRelation("myreleation", ds.Tables["MB"].Columns["ID"], ds.Tables["Reply"].Columns["MBID"], false); ds.Relations.Add(l_relation); PagedDataSource pds = new PagedDataSource(); pds.DataSource = ds.Tables["MB"].DefaultView; pds.AllowPaging = true; pds.PageSize = 5; pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]); return pds; } //查找在repeater中的数据控件并实现分页和得到回复内容 protected void Repeater_Msg_Board_ItemDataBound(object sender, RepeaterItemEventArgs e) { /*/TextBox r = (TextBox)Repeater_Msg_Board.FindControl("rMessage"); //rMsg = r.Text; //查找Item if (e.Item.ItemType == ListItemType.Item) { //TextBox rMessage = (TextBox)e.Item.FindControl("rMessage"); //rMsg = rMessage.Text ; //((TextBox)e.Item.FindControl("rMessage")).Text="nihaowshi"; } */ //查找Footer内容,实现分页 if (e.Item.ItemType == ListItemType.Footer) { DropDownList ddlp = (DropDownList)e.Item.FindControl("ddlp"); HyperLink lpfirst = (HyperLink)e.Item.FindControl("hlfir"); HyperLink lpprev = (HyperLink)e.Item.FindControl("hlp"); HyperLink lpnext = (HyperLink)e.Item.FindControl("hln"); HyperLink lplast = (HyperLink)e.Item.FindControl("hlla"); bindData().CurrentPageIndex = ddlp.SelectedIndex; int n = Convert.ToInt32(bindData().PageCount);//n为分页总数 int i = Convert.ToInt32(bindData().CurrentPageIndex);//i为当前页 Label lblpc = (Label)e.Item.FindControl("lblpc"); lblpc.Text = n.ToString(); Label lblp = (Label)e.Item.FindControl("lblp"); lblp.Text = Convert.ToString(bindData().CurrentPageIndex + 1); if (!IsPostBack) { for (int j = 0; j < n; j++) { ddlp.Items.Add(Convert.ToString(j + 1)); } } if (i <= 0) { lpfirst.Enabled = false; lpprev.Enabled = false; lplast.Enabled = true; lpnext.Enabled = true; } else { lpprev.NavigateUrl = "?id=" + Msg_CmpId + "&page=" + (i - 1); } if (i >= n - 1) { lpfirst.Enabled = true; lplast.Enabled = false; lpnext.Enabled = false; lpprev.Enabled = true; } else { lpnext.NavigateUrl = "?id=" + Msg_CmpId + "&page=" + (i + 1); } lpfirst.NavigateUrl = "?id=" + Msg_CmpId + "&page=0";//向本页传递数据page lplast.NavigateUrl = "?id=" + Msg_CmpId + "&page=" + (n - 1); ddlp.SelectedIndex = Convert.ToInt32(bindData().CurrentPageIndex);//更新下拉列表框中的当前选中页序号 } } //在进行分页显示 protected void ddlp_SelectedIndexChanged(object sender, EventArgs e) { //脚模板中的下拉列表框更改时激发 int pg = Convert.ToInt32(((DropDownList)sender).SelectedValue) - 1;//获取列表框当前选中项 Response.Redirect("Msg_Board.aspx?id=" + Msg_CmpId + "&page=" + pg);//页面转向 } //点击子repeater按钮回复 protected void bReply_Click(object sender, EventArgs e) { //找到留言主题的ID号 Button bReply = (Button)sender; /////////////////////////////////////////// //得到了,该行的index的值也就是需要的索引值 int n = ((RepeaterItem)bReply.Parent).ItemIndex; ////////////////////////////////////////// int MBID = Convert.ToInt32(bReply.CommandArgument.ToString()); //得到rMessage的值 TextBox r = (TextBox)Repeater_Msg_Board.Items[n].FindControl("rMessage"); rMsg = r.Text; //得到留言的时间 DateTime dt = System.DateTime.Now; int an = 1;//非匿名 //得到回复的内容不能为空 string testrMsg = rMsg; if (testrMsg.Trim() == "") { Response.Write("<script language=javascript>alert('回复不能为空');location.href='MgMsgBoard.aspx'</script>"); } else { string connStr = ConfigurationManager.ConnectionStrings["WebSetConnectionString"].ConnectionString; SqlConnection sql = new SqlConnection(connStr); sql.Open(); SqlCommand cmd = sql.CreateCommand(); cmd.CommandText = "insert into T_Reply(MBID,rUserName,rMessage,rLeaveTime,rAnonymity) values(@id,@User,@Ms,@LT,@An)"; cmd.Parameters.Add(new SqlParameter("id",MBID)); cmd.Parameters.Add(new SqlParameter("User",Admin)); cmd.Parameters.Add(new SqlParameter("Ms",rMsg)); cmd.Parameters.Add(new SqlParameter("LT",dt)); cmd.Parameters.Add(new SqlParameter("An",an)); cmd.ExecuteNonQuery(); sql.Close(); Response.Write("<script language='javascript'>alert('回复成功!');location.href='MgMsgBoard.aspx';</script>"); } }}以上为全部的代码,当然还有些的其他的东西,就不给出来了,着已经是最大的贡献了,代码中不明白的地方请详细看代码,或者联系本人:欢迎QQ交流:2274345740或者留言。