多分これはあなたにアイデアを与えます:
HTML:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:Repeater ID="repPeople" runat="server">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtName" OnDataBinding="text_databinding" Text='<%# Eval("Name")%>'></asp:TextBox>
</ItemTemplate>
</asp:Repeater>
</asp:Content>
コードビハインド:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<Person> tmp = new List<Person>();
tmp.Add(new Person() { LastName = "Escano", Name = "Hanlet" });
tmp.Add(new Person() { LastName = "Escano", Name = "Hanlet" });
tmp.Add(new Person() { LastName = "Escano", Name = "Hanlet" });
tmp.Add(new Person() { LastName = "Escano", Name = "Hanlet" });
tmp.Add(new Person() { LastName = "Escano", Name = "Hanlet" });
this.repPeople.DataSource = tmp;
this.repPeople.DataBind();
}
public void text_databinding(object sender, EventArgs e)
{
Response.Write(((TextBox)sender).ClientID + "<br />") ;
}
}
public class Person
{
public string Name { get; set; }
public string LastName { get; set; }
}
出力:
MainContent_repPeople_txtName_0
MainContent_repPeople_txtName_1
MainContent_repPeople_txtName_2
MainContent_repPeople_txtName_3
MainContent_repPeople_txtName_4
したがって、テキストボックスのOnDataBindingをほとんど使用してから、送信者をにキャストします。TextBox
を使用する必要はありませんFindControl()
。