代码之家  ›  专栏  ›  技术社区  ›  Espo

为什么Repeater中不包含页脚项。项目?

  •  5
  • Espo  · 技术社区  · 17 年前

    <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" />
    

    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”作为计数,那么我如何在footermplate中引用我的文本框呢?

    3 回复  |  直到 17 年前
        1
  •  1
  •   Ray Booysen    17 年前

    MSDN documentation

    如果你想引用文本框,你可以从中继器获得ItemDataBound事件的引用,在那里你可以测试页脚。

    例如

    private void Repeater_ItemDataBound(Object Sender, RepeaterItemEventArgs e) 
    {
    
      if (e.Item.ItemType == ListItemType.Footer) 
      {
        TextBox textBox = e.Item.FindControl("TextBox1") as TextBox;
      }
    }    
    
        2
  •  1
  •   Jason Plank Maksim Kondratyuk    14 年前

    RepeaterItems

    RepeaterItem footerItem=null;
    foreach(Control cnt in Repeater1.Controls)
    {
    if(cnt.GetType() == typeof(RepeaterItem) && ((RepeaterItem)cnt).ItemType == ListItemType.Footer)
    {
    footerItem = cnt;
    break;
    }
    }
    
        3
  •  0
  •   leroy    16 年前

    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";
        }
    }