リピーターがあるページがあります。ユーザーが自分のWebControlボタンをクリックすると、そのボタンのイベントハンドラがFindControlを使用してリピータ内のアイテムを繰り返し、コントロールの値の一部が使用されるように、イベントハンドラを作成しています。しかし、ページがロードされた後、リピーターアイテムが入力されたように見えますが、ボタンをクリックしてこれをポストすると、リピーターアイテムを反復すると、それらはすべて空であることがわかります。私はシーケンシングを完全に理解していませんが、私の反復コードがまだ設定されていないRepeaterItemにアクセスしようとしていると仮定しています。EventHandler内のRepeaterItemコントロールへのアクセス
リピータコードは、私のOnLoadメソッドにあります。それ以外では、イベントハンドラをクリックしてそれらのアイテムを繰り返し処理しようとしています。
protected void MyButton_Click(object sender, EventArgs e)
{
foreach(RepeaterItem item in MyRepeater.Items)
{
MyLabel = (Label)item.FindControl("MyLabel");
}
}
ボタンがリピータのFooterTemplateの中に位置しています:これは私が何をしようとしていたものを、本質的です。
<asp:Button runat="server" OnClick="SubmitChecklist_Click" cssclass="BlueSubmit" id="SubmitChecklist" text="Submit" />
ありがとうございます。
編集:明確にするために、私は取得しています正確なエラーがあるとNullReferenceException、私は、例えば、何かをしようとすると、Response.Writeを(MyLabel.Text)
編集:より今日に探した後、これは私が起こっていることを理解しているものです:リピータはポストバックでデータバインドされています。生成されたドロップダウンリストから選択してボタンを押すと、再びポストバックされます。この時点で、リピータは初期値に再びデータバインドされます。したがって、ユーザーの選択を得るためにポストバックする必要がある場合、ボタンのイベントハンドラーでこれを実行して、リピーターが再びデータバインドされる前に選択した値を取得できるようにするにはどうすればよいですか?
イベントハンドラを配線する場所はどこですか?投稿したコードは問題ありません。設定されていない項目の問題です。 –
オブジェクトの送信者から情報を取得できますか? – jrcs3
私はResponse.Writeハッシュコードを送信者からできるようになったので、私はそう仮定します。 –