在<asp:Repeater中, <ItemTemplate>里只放一个 <asp:HyperLink, (或任何服务器控件)
Repeater1_ItemDataBound()中e.Item.Controls[1]才是HyperLink, 为什么不是Controls[0]呢,而且e.Item.Controls.Count居然是3,而不是1。什么原因呢?
类似问题还体现在,比如新建一个aspx页面,什么都不写,Page.Controls.Count就等于3,Page.Controls[1].ID是"Form1",0和2都没内容
注:已知用FindControl可以执行,只是不明白上述问题原因。
谢谢各位了!

解决方案 »

  1.   

    模版列里,在每个服务器端控件前后都加了一个System.Web.UI.LiteralControl,里面的内容是"\r\n\t\t\t\t\t\t\t",它只是为了调整格式的,没什么大用处,所以没必要深究
    只需要知道模版列里嵌套的控件序号依次是1,3,5,7,9....就可以了
      

  2.   

    Page.Controls也是差不多,Page.Controls[0]是 <body>和一些调整格式的标签
    Page.Controls[2]是 </body>和一些调整格式的标签
      

  3.   

    新建一个aspx页面,什么都不写,Page.Controls.Count就等于3,Page.Controls[1].ID是"Form1",0和2都没内容,这也是你说的这个原理吧?
    msdn里有这类东西吗?怎们能查到呢?我想仔细了解一下
      

  4.   

    vs2003 新建一个 aspxprivate void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    foreach(Control c in this.Controls)
    {
    Response.Write(c.GetType().Name);
    Response.Write("<br/>");
    }
    }结果是System.Web.UI.ResourceBasedLiteralControl
    System.Web.UI.HtmlControls.HtmlForm
    System.Web.UI.LiteralControl三个htmlform是那个From删除所有html 什么也没有
    只要有一行html 就有ResourceBasedLiteralControl
      

  5.   

    建议 你给你的  HyperLink一个 id 然后 e.item.findcontrol("id") 这样 取