2016-06-20 3 views
0

私は2つのリピーターを持っています。最初のリピーターは質問をリストし、2番目のリピーターはその特定の質問の複数の選択肢をリストします。 しかし、複数の選択肢(input type = "radio")またはText(input type = "text")があります。私はどちらか一方(ラジオ)か他方(テキスト)のどちらかの価値を得ようとしています。私のchildRepeaterの値を取得する

<%#DataBinder.Eval(Container.DataItem、 "Descricao")%>

          <%-- Listagem de Respostas --%> 

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

                <tr> 
                 <td> 
                  <div id="uxRespostaText" visible="false" runat="server"> 
                   <input type="text" id="uxRespostaDissertativa" placeholder="Resposta" style="width:1000px" ></input> 
                  </div> 
                  <div id="uxRespostaRadio" visible="false" runat="server"> 
                   <input type="radio" id="uxResposta" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "Descricao")%>'/><%# DataBinder.Eval(Container.DataItem, "Descricao")%> 
                  </div> 
                 </td> 
                </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; 

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

      PergId.Text = pergunta.Id.ToString(); 

      rptRespostas.DataBind(); 

     } 

    } 

    protected void uxRespList_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      System.Web.UI.HtmlControls.HtmlContainerControl uxRespostaText = (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("uxRespostaText"); 
      System.Web.UI.HtmlControls.HtmlContainerControl uxRespostaRadio = (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("uxRespostaRadio"); 

      int PerguntaID = Int32.Parse(PergId.Text); 
      var pergunta = ctx.QuestionarioPerguntas.Where(x => x.Id == PerguntaID).FirstOrDefault(); 

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

     } 

    } 

    //Save here 
    protected void uxSalvarPesquisa_Click(object sender, EventArgs e) 
    { 

     foreach (RepeaterItem item in uxRespList.Items) 
     { 

     } 

    } 

答えて

0

後ろには、の値を取得することができますあなたのhtml入力あなたの要件に基づいてコードを変更することができます。

foreach (RepeaterItem item in uxQuestList.Items) 
{ 
    Repeater uxRespList = (Repeater)item.FindControl("uxRespList"); 

    foreach (RepeaterItem inneritem in uxRespList.Items) 
    { 
     HtmlInputText input = (HtmlInputText)inneritem.FindControl("uxRespostaDissertativa"); 
     if (input.Attributes["visible"] == "true") 
     { 
      var answer = input.Value; 
     } 

     HtmlInputRadioButton inputRadio = (HtmlInputRadioButton)inneritem.FindControl("uxRespostaRadio"); 
     if (inputRadio.Attributes["visible"] == "true") 
     { 
      var answer = inputRadio.Value; 
     } 
    } 
} 
関連する問題