2016-06-17 8 views
0

Я пытаюсь изменить Видимый мой Div, но im не смог его найти. Его кажется потому, что он внутри другого ретранслятора.Не могу найти Div внутри моего репитера ребенка

<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(); 
    } 
} 

ответ

1

Вы должны искать TextBox в каждом элементе внутреннего Repeater. Вы можете установить обработчик ItemDataBound событийной uxRespList в разметке:

<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(); 
    } 
} 

И обрабатывать каждый внутренний элемент повторителя после его данных привязывается:

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; 
     ... 
    } 
} 
+0

ТКС человек, это решить мою проблему. –

+0

Добро пожаловать! – ConnorsFan