<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound1">
    <ItemTemplate>
    <tr id = "row" runat="server">
        </ItemTemplate>
         </asp:Repeater>
</div>
</asp:Content>然后我在Repeater1_ItemDataBound1事件中

HtmlTableRow row = (HtmlTableRow)e.Item.FindControl("row");
这个方法取不出值来,如果不用母版页就能取出来。 各位谢谢了,网上搜索了很久也没找到答案!!

解决方案 »

  1.   


    tmlTableRow row = (HtmlTableRow)e.Item.Controls[0].FindControl("row");
      

  2.   

    还是取不出来呢,还是为null!!
      

  3.   

    怎么DIV标筌一个在模板里面,一个在外面?
      

  4.   

    你应该先在母版页内然后再找Repeater,我觉得至少是这样,我没有试,你试试看。
      

  5.   


     Content con = (Content)Page.FindControl("Content1");这样都找不到,不知道为什么 找Content控件!
      

  6.   

    母版页在显示的时候有些元素会合并,看看网页源代码,你的那个元素到底去了哪里。或者你可以考虑用其他容器空间。因为html元素合并时,tr是很容易出错的。
      

  7.   

    和实际代码不一样,看看你的Repeater中是否用了头模板,如果是,去掉看看。 
      

  8.   

    模板页有个类是什么master还是什么的吧?我现在在弄2003,几年没有弄2005了,我觉得至少该从母版下手才对。如果不行,你再查查资料吧。我也只是指一条路而已。
      

  9.   

    谢谢 Leo_0924 问题解决了,我一个控件一个控件的找。然后找到了 TR解决代码
     ContentPlaceHolder con = (ContentPlaceHolder)Page.Master.FindControl("ContentPlaceHolder1");
                    if (con == null)
                    {
                        return;
                    }
                    else
                    {
                        BindData();
                        Repeater rt = (Repeater)con.FindControl("Repeater1");
                        for (int i = 0; i < rt.Items.Count;i++ )
                        {
                            HtmlControl a = (HtmlControl)rt.Items[i].FindControl("row1");
                        }
                    }