repeater控件的使用方法,内部控件值的获得和控制,以及分页和对指定id号的获得

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或者留言。


 

1楼li13250295669小时前
[code=csharp]nmarkn[/code]