在我的子中继器中找不到 Div

Cant find a Div inside of my child repeater

我正在尝试更改 Div 的可见性,但我找不到它。好像是因为它在另一个Repeater里面。

<asp:Repeater ID="uxPesquisaList" runat="server" OnItemDataBound="uxQuestList_ItemDataBound">
    <ItemTemplate>
        <tr>
            <td>
                <strong>
                    <%# DataBinder.Eval(Container.DataItem,"Descricao")%></strong>
            </td>
        </tr>
        <%--    Listagem de Respostas --%>
        <asp:Repeater ID="uxRespList" runat="server">
            <ItemTemplate>
                <tr>
                    <div id="uxRespostaText" visible="false" runat="server"> ***I want to display this Div***
                        <td>
                            <asp:TextBox ID="uxResposta" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Descricao")%>' />
                        </td>
                    </div>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

我的代码背后

protected void uxQuestList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Repeater rptRespostas = (Repeater)(e.Item.FindControl("uxRespList"));

        QuestionarioPergunta pergunta = (QuestionarioPergunta)e.Item.DataItem;

        System.Web.UI.HtmlControls.HtmlContainerControl uxRespostaText = (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("uxRespostaText"); **I try this, but it always return NullExpection**

        if (pergunta.TipoPergunta == "Dissertativa")
        {
            uxRespostaText.Visible = true;
        }

        rptRespostas.DataSource = ctx.QuestionarioRespostas.Where(x => x.PergId == pergunta.Id).ToList();
        rptRespostas.DataBind();
    }
}

您必须在内部 Repeater 的每个项目中查找 TextBox。您可以在标记中设置 uxRespListItemDataBound 事件处理程序:

<asp:Repeater ID="uxRespList" runat="server" OnItemDataBound="uxRespList_ItemDataBound">

在代码隐藏中,您将内部 Repeater 的数据绑定到外部 Repeater 的事件处理程序中(正如您在代码中所做的那样):

protected void uxQuestList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Repeater rptRespostas = e.Item.FindControl("uxRespList") as Repeater;
        ...

        rptRespostas.DataSource = ...
        rptRespostas.DataBind();
    }
}

并且在绑定数据后处理每个内部 Repeater 项目:

protected void uxRespList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        TextBox uxRespostaText = e.Item.FindControl("uxRespostaText") as TextBox;
        ...
    }
}