Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Finding a Repeater's controls during postback

An aspx example with codebehind.

If it isn't a postback, the data gets bound,

When you click the button, it shows the controls from the repeater without databinding

Label2 doesn't keep it's text the same way because it doesn't use the Text property of the label. It uses a DataBoundLiteralControl inside the label. (Seems like extra controls to me)

 


<%@ Page language="c#" Codebehind="aspmessageboard.aspx.cs" AutoEventWireup="false" Inherits="ResourcedControls_Examples.aspmessageboard" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>aspmessageboard</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="FlowLayout">
        <form id="aspmessageboard" method="post" runat="server">
            <asp:Repeater id="Repeater1" runat="server">
                <ItemTemplate>
                    <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
                    <asp:Label id="Label1" runat="server" Text='<%#DataBinder.Eval( Container.DataItem,"String_Date")%>'>
                    </asp:Label>
                    <asp:Label id="Label2" runat="server">
                        <%#DataBinder.Eval( Container.DataItem,"String_Date2")%>
                    </asp:Label>
                </ItemTemplate>
            </asp:Repeater>
            <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
        </form>
    </body>
</HTML>


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace ResourcedControls_Examples
{
    /// <summary>
    /// Summary description for aspmessageboard.
    /// </summary>
    public class aspmessageboard : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox TextBox1;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.Button Button1;
        protected System.Web.UI.WebControls.Repeater Repeater1;
    
        private void Page_Load(object sender, System.EventArgs e)
        {
            if(!IsPostBack)
            {
                Response.Write("Binding Grid<HR>");

                DataSet test = new DataSet();
                test.Tables.Add();
                test.Tables[0].Columns.Add("String_Date",typeof(string));
                test.Tables[0].Columns.Add("String_Date2",typeof(string));
                test.Tables[0].Rows.Add(new object[]{"1.0","1.1"});
                test.Tables[0].Rows.Add(new object[]{"2.0","2.1"});
                test.Tables[0].Rows.Add(new object[]{"3.0","3.1"});
                Repeater1.DataSource = test;
                Repeater1.DataBind();
            }
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {    
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void Button1_Click(object sender, System.EventArgs e)
        {
            foreach(RepeaterItem item in Repeater1.Items)
            {
                TextBox textBox = item.FindControl("TextBox1") as TextBox;
                Label label = item.FindControl("Label1") as Label;
                Label label2 = item.FindControl("Label2") as Label;

                Response.Write("Item" + item.ItemIndex + "<HR>");
                Response.Write(textBox.ID);
                Response.Write(".ID=");
                Response.Write(textBox.ID);
                Response.Write("<BR >");
            
                Response.Write(textBox.ID);
                Response.Write(".Text=");
                Response.Write(textBox.Text);
                Response.Write("<BR >");

                Response.Write(label.ID);
                Response.Write(".ID=");
                Response.Write(label.ID);
                Response.Write("<BR >");

                Response.Write(label.ID);
                Response.Write(".Text=");
                Response.Write(label.Text);
                Response.Write("<BR >");

                Response.Write(label2.ID);
                Response.Write(".ID=");
                Response.Write(label2.ID);
                Response.Write("<BR >");

                Response.Write(label2.ID);
                Response.Write(".Text=");
                Response.Write(label2.Text);
                Response.Write("<BR >");
                
                Response.Write("DataBoundLiteralControl");
                Response.Write(".Text=");
                DataBoundLiteralControl dbl = label2.Controls[0] as DataBoundLiteralControl;
                Response.Write(dbl.Text);
                Response.Write("<HR>");
            }
        }
    }
}

2 Comments

Comments have been disabled for this content.