<asp:Repeater ID="rptList" runat="server">
        <HeaderTemplate>
            <asp:Label ID="lblName" runat="server" Text="姓名"></asp:Label>
            <asp:Label ID="lblGender" runat="server" Text="性别"></asp:Label>
        </HeaderTemplate>
        <ItemTemplate>
            <asp:Label ID="lblName" runat="server" Text='<%= Eval("Name") %>'></asp:Label>
            <asp:Label ID="lblGender" runat="server" Text='<%= Eval("Gender") %>'></asp:Label>
        </ItemTemplate>
    </asp:Repeater>
    public partial class MyTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //在这里如何得到我前台的rptList中的HeaderTemplate中的label控件
            //在这里如何得到我前台的rptList中的ItemTemplate中的label控件
        }
    }谢谢

解决方案 »

  1.   

    你之前问过的http://topic.csdn.net/u/20100113/16/339E6D07-C242-466B-87EC-375D8ADF322B.html
      

  2.   

    我用System.Web.UI.CompiledTemplateBuilder tp = (System.Web.UI.CompiledTemplateBuilder)rptList.HeaderTemplate;
    Response.Write(tp.ToString());得到的是:System.Web.UI.CompiledTemplateBuilder 
    而不是
                <asp:Label ID="lblName" runat="server" Text="姓名"></asp:Label>
                <asp:Label ID="lblGender" runat="server" Text="性别"></asp:Label>
    谢谢
      

  3.   

    绑定控件,有数据后:
     foreach (RepeaterItem item in this.rptList.Items)
            {
                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
                {
                    Label lbl = item.FindControl("lblName") as Label;
                    if (lbl != null)
                    {
                        string text = lbl.Text;
                    }
                }
            }
      

  4.   

    不绑定没有办法取
    -----------------
    RE:难道我要通过IO读取这个文件再通过正则来取他的内容再分析?
      

  5.   

    不绑定没有办法取
    -----------------
    RE:难道我要通过IO读取这个文件再通过正则来取他的内容再分析?
    ------------------
    OH不行,因为发布网站的时候这些内容都放在dll里面,所以用IO记取再分析是不行的
      

  6.   

    或者在每一项绑定的时候调用 protected void rptList_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Label lbl = item.FindControl("lblName") as Label;
                if (lbl != null)
                {
                    string text = lbl.Text;
                } 
            }
        }
      

  7.   

    OH My god
    ----------------
    难道我就只能先虚拟一条记录出来,没有其他办法我现在能想到的就是通过IO,但是通过IO的话在发布网站后aspx文件会统一被编译到dll里面,所以这个方法不行!!!
      

  8.   


    <asp:Repeater ID="rptList" runat="server">
            <HeaderTemplate>
                <asp:Label ID="lblName" runat="server" Text="姓名"></asp:Label>
                <asp:Label ID="lblGender" runat="server" Text="性别"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                <asp:Label ID="lblGender" runat="server" Text='<%# Eval("Gender") %>'></asp:Label>
            </ItemTemplate>
        </asp:Repeater>
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Name");
                dt.Columns.Add("Gender");            DataRow row = dt.NewRow();
                row["Name"] = "aa";
                row["Gender"] = "男";
                dt.Rows.Add(row);
                row = dt.NewRow();
                row["Name"] = "bb";
                row["Gender"] = "女";
                dt.Rows.Add(row);
                row = dt.NewRow();
                row["Name"] = "cc";
                row["Gender"] = "女";
                dt.Rows.Add(row);
                row = dt.NewRow();
                row["Name"] = "dd";
                row["Gender"] = "男";
                dt.Rows.Add(row);            rptList.DataSource = dt;
                rptList.DataBind();            Label lblNameh = (Label)rptList.Controls[0].FindControl("lblName");
                Label lblGenderh = (Label)rptList.Controls[0].FindControl("lblGender");
                if (lblNameh != null)
                {
                    string strn = lblNameh.Text;
                }
                if (lblGenderh != null)
                {
                    string strg = lblGenderh.Text;
                }
                for (int i = 0; i < rptList.Items.Count; i++)
                {
                    Label lblName = (Label)rptList.Items[i].FindControl("lblName");
                    if (lblName != null)
                    {
                        string str1 = lblName.Text;
                    }
                }
            }
        }
      

  9.   

    楼上的就是我现在用的虚拟一条记录出来;
    但是我现在写的是一个控件,继承了Repeater
    所以他的原始的绑定的数据并不是一样的,而且我每在一个地方用这个控件的时候都要用上面的方法虚拟出一条记录感觉就是太麻烦了,不够科学有效谢谢
      

  10.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;/// <summary>
    /// Summary description for AbstractBaseUserControlClass
    /// </summary>
    public abstract class AbstractBaseUserControlClass : System.Web.UI.UserControl
    {
        public AbstractBaseUserControlClass()
        {
            //
            // TODO: Add constructor logic here
            //
        }    public abstract IList<Control> GetContentControl();
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;public partial class RepeaterTemplate : AbstractBaseUserControlClass // System.Web.UI.UserControl
    {
        IList<Control> list;    protected void Page_Load(object sender, EventArgs e)
        {    }    private void RecursiveControl(Control ctrl)
        {
            foreach (Control c in ctrl.Controls)
            {
                list.Add(c);
                if (c.Controls.Count > 0)
                {
                    RecursiveControl(c);
                }
            }
        }    public override IList<Control> GetContentControl()
        {        list = new List<Control>();        RecursiveControl(this);        return list;
        }
    }<%@ Control Language="C#" AutoEventWireup="true" CodeFile="RepeaterTemplate.ascx.cs"
        Inherits="RepeaterTemplate" %>
        
    <asp:Label ID="lblName" runat="server" Text='<%= Eval("Name") %>'></asp:Label>
    <asp:Label ID="lblGender" runat="server" Text='<%= Eval("Gender") %>'></asp:Label><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Repeater ID="rptList" runat="server">
            <HeaderTemplate>
                <asp:Label ID="lblName" runat="server" Text="姓名"></asp:Label>
                <asp:Label ID="lblGender" runat="server" Text="性别"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblName" runat="server" Text='<%= Eval("Name") %>'></asp:Label>
                <asp:Label ID="lblGender" runat="server" Text='<%= Eval("Gender") %>'></asp:Label>
            </ItemTemplate>
        </asp:Repeater>
        </form>
    </body>
    </html>    protected void Page_Load(object sender, EventArgs e)
        {        AbstractBaseUserControlClass abc = LoadControl("RepeaterTemplate.ascx") as AbstractBaseUserControlClass;        IList<Control> list = abc.GetContentControl();        for (int i = 0; i < list.Count; i++)
            {
                if (list[i] is Label)
                {
                    Response.Write(string.Format("{0}<br>", (list[i] as Label).ID));
                }
            }        rptList.ItemTemplate = LoadTemplate("RepeaterTemplate.ascx");
        }
      

  11.   


    http://topic.csdn.net/u/20100113/16/339E6D07-C242-466B-87EC-375D8ADF322B.html问题的原因和解决办法 我在这个帖子里说了的只是你当时没有继续跟帖,我也懒了一下 没有写DEMO
      

  12.   

    AbstractBaseUserControlClass  放在appcode 中,或类库中