In this article I will explain with an example, how to populate (bind) TextBox in ItemTemplate of Repeater Control in ASP.Net using C# and VB.Net.
The TextBox will be populated from database using the DataBinder.Eval function inside the Repeater control in ASP.Net using C# and VB.Net.
 
 
Database
I have made use of the following table Customers with the schema as follows.
Populate (Bind) TextBox in ItemTemplate of Repeater Control in ASP.Net
 
I have already inserted few records in the table.
Populate (Bind) TextBox in ItemTemplate of Repeater Control in ASP.Net
 
Note: You can download the database table SQL by clicking the download link below.
          Download SQL file
 
 
HTML Markup
The following HTML Markup consists of an ASP.Net Repeater control with an HTML Table Layout.
Note: For more information on displaying HTML Table Layout using Repeater control, please refer Repeater control Tutorial with example in ASP.Net using C# and VB.Net.
 
The Repeater’s ItemTemplate consists of two Label controls and a TextBox control.
<asp:Repeater ID="rptCustomers" runat="server">
    <HeaderTemplate>
        <table cellspacing="0" rules="all" border="1">
            <tr>
                <th scope="col" style="width: 80px">
                    Customer Id
                </th>
                <th scope="col" style="width: 120px">
                    Name
                </th>
                <th scope="col" style="width: 100px">
                    Country
                </th>
                <th>
                </th>
            </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <asp:Label ID="lblCustomerId" runat="server" Text='<%# Eval("CustomerId") %>' />
            </td>
            <td>
                <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>' />
            </td>
            <td>
                <asp:TextBox ID="txtCountry" runat="server" Text='<%# Eval("Country") %>' />
            </td>
            <td>
                <asp:Button Text="Get Value" runat="server" OnClick="GetValue" />
            </td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
 
 
Namespaces
You will need to import the following namespaces.
C#
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
 
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
 
 
Populating Repeater control from database in ASP.Net
Inside the Page load event handler, the Repeater is populated with the records from the Customers table.
C#
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindRepeater();
    }
}
 
private void BindRepeater()
{
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", con))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
            {
                DataTable dt = new DataTable();
                sda.Fill(dt);
                rptCustomers.DataSource = dt;
                rptCustomers.DataBind();
            }
        }
    }
}
 
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then
        Me.BindRepeater()
    End If
End Sub
 
Private Sub BindRepeater()
    Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
    Using con As SqlConnection = New SqlConnection(constr)
        Using cmd As SqlCommand = New SqlCommand("SELECT * FROM Customers", con)
            Using sda As SqlDataAdapter = New SqlDataAdapter(cmd)
                Dim dt As DataTable = New DataTable()
                sda.Fill(dt)
                rptCustomers.DataSource = dt
                rptCustomers.DataBind()
            End Using
        End Using
    End Using
End Sub
 
 
Get TextBox value from Repeater on Button click in ASP.Net
When the Button is clicked, first the Repeater Item is referenced using the NamingContainer property.
Then the Label and the TextBox controls are referenced from the Repeater Item using the FindControl method.
Finally the values of Label and TextBox controls are displayed using JavaScript Alert Message Box.
C#
protected void GetValue(object sender, EventArgs e)
{
    //Reference the Repeater Item using Button.
    RepeaterItem item = (sender as Button).NamingContainer as RepeaterItem;
 
    //Reference the Label and TextBox.
    string message = "Customer Id: " + (item.FindControl("lblCustomerId") as Label).Text;
    message += "\\nName: " + (item.FindControl("lblName") as Label).Text;
    message += "\\nCountry: " + (item.FindControl("txtCountry") as TextBox).Text;
 
    ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('" + message + "');", true);
}
 
VB.Net
Protected Sub GetValue(ByVal sender As Object, ByVal e As EventArgs)
    'Reference the Repeater Item using Button.
    Dim item As RepeaterItem = TryCast((TryCast(sender, Button)).NamingContainer, RepeaterItem)
 
    'Reference the Label and TextBox.
    Dim message As String = "Customer Id: " & (TryCast(item.FindControl("lblCustomerId"), Label)).Text
    message += "\nName: " & (TryCast(item.FindControl("lblName"), Label)).Text
    message += "\nCountry: " & (TryCast(item.FindControl("txtCountry"), TextBox)).Text
 
    ClientScript.RegisterStartupScript(Me.GetType(), "alert", "alert('" & message & "');", True)
End Sub
 
 
Screenshot
Populate (Bind) TextBox in ItemTemplate of Repeater Control in ASP.Net
 
 
Demo
 
 
Downloads