5

ボタンの OnClick イベントで、FooterTemplate 内のテキスト ボックスから値を取得する必要があります。私が最初に考えたのは、リピーターの items-property をループすることでしたが、このサンプルでわかるように、フッター アイテムではなく、実際のデータバインド アイテムのみが含まれています。

ASPX:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        Item<br />
    </ItemTemplate>
    <FooterTemplate>
        Footer<br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </FooterTemplate>
</asp:Repeater>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

コードビハインド.cs:

protected void Page_Load(object sender, EventArgs e)
{
    ListItemCollection items = new ListItemCollection();
    items.Add("value1");
    items.Add("value2");
    Repeater1.DataSource = items;
    Repeater1.DataBind();
}

protected void Button1_Click(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine(Repeater1.Items.Count);
}

このコードはカウントとして「2」しか出力しないので、フッターテンプレート内でテキストボックスを参照するにはどうすればよいですか?

4

3 に答える 3

1

コントロールはリピーターにあります。RepeaterItemsこれにより、リピーター(コレクション)のすべてのコントロールが提供されます。今、あなたはこのようなことをすることができます:

RepeaterItem footerItem=null;
foreach(Control cnt in Repeater1.Controls)
{
if(cnt.GetType() == typeof(RepeaterItem) && ((RepeaterItem)cnt).ItemType == ListItemType.Footer)
{
footerItem = cnt;
break;
}
}
于 2009-06-11T16:19:42.820 に答える
0

フッターはリピーターの最後の子コントロールにする必要があるため、次のようなことができます..

RepeaterItem riFooter = Repeater1.Controls[Repeater1.Controls.Count - 1] as RepeaterItem;
if (riFooter != null && riFooter.ItemType == ListItemType.Footer) {
    TextBox TextBox1 = riFooter.FindControl("TextBox1") as TextBox;
    if (TextBox1 != null) {
        TextBox1.Text = "Test";
    }
}
于 2009-09-25T02:05:39.653 に答える