2016-06-17 5 views
0

私のDivのVisibleを変更しようとしていますが、私はそれを見つけることができません。それは別のリピーターの内部のために思われる。あなたは、内側リピータの各項目にテキストボックスを探す必要が私の子供の中継器の中にDivが見つかりました

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

の後ろ

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

マイコード。あなたはマークアップでuxRespListItemDataBoundイベントハンドラを設定することができます(あなたはすでにあなたのコードでそうであるように)コードビハインドで

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

、あなたは外リピーターのイベントハンドラでその内側の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

TKSの男を、これは私の問題を解決します。 –

+0

よろしくお願いします! – ConnorsFan

関連する問題