だから、これはページのライフサイクルと関係があると思います.おそらく、コントロールはまだページの読み込みにバインドされていませんか? 正直なところ、バインドが発生したとき、特定のデータにアクセスできるとき、アクセスが早すぎる/遅すぎるときなど、ASP.NET ページのライフサイクルについてまだ学んでいます。 . コントロールを再帰的に検索するメソッドを想定し、RepeaterItem から始めて、TextBox を探します...
private void FindMyTextBox()
{
foreach (RepeaterItem repeated in myRepeater.Items)
{
TextBox txtPercentage = (TextBox)FindControlRecursive(repeated, "txtPercentage");
.
.
.
}
}
....どこ....
public static Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
return root.Controls.Cast<Control>()
.Select(c => FindControlRecursive(c, id))
.FirstOrDefault(c => c != null);
}
OnClick
...なぜこの作業は、イベントにバインドされたメソッドから呼び出されるのでしょうか....
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="Validate" />
protected void Validate(object sender, EventArgs e)
{
FindMyTextBox();
}
...しかし、Page_Load から呼び出されたときではありません....
protected void Page_Load(object sender, EventArgs e)
{
FindMyTextBox();
}