无法从中继器中的文本框中获取文本

问题描述:

在此处绘制完整的空白,这应该非常简单,但是我尝试的任何操作都不起作用。无法从中继器中的文本框中获取文本

我只是想从TextBox得到的值在Repeater之内。

<asp:Repeater ID="rptQuestions" runat="server"> 
       <ItemTemplate> 
        <li> 
         <div class=""> 
         <asp:Label ID="intQuestion" runat="server" Visible="false" Text='<%#Eval("intQuestion")%>'></asp:Label> 
         <asp:Label ID="intQuestionType" runat="server" Visible="false" Text='<%#Eval("intQuestionType")%>'></asp:Label> 
         <p> 
          <asp:Label ID="lblQuestion" runat="server" Text='<%#Eval("strQuestion").ToString().Replace("[*Garage*]", GarageName)%>'></asp:Label> 
         </p> 
         <asp:RadioButtonList ID="rblAnswers" RepeatDirection="Horizontal" TextAlign="Left" runat="server"></asp:RadioButtonList> 
         <asp:CheckBoxList ID="cblAnswers" RepeatDirection="Horizontal" TextAlign="Left" runat="server" ></asp:CheckBoxList> 
         <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="rblAnswers" CssClass="parsley-error" ErrorMessage="This value is required"></asp:RequiredFieldValidator>        
         <asp:TextBox ID="txtAnswers" TextMode="MultiLine" runat="server"></asp:TextBox> 
         </div> 

        </li> 
       </ItemTemplate> 
      </asp:Repeater> 

及我的点击代码如下

foreach (RepeaterItem ri in rptQuestions.Items) 
{ 
    var QuestionId = (Label)ri.FindControl("intQuestion"); 
    var QuestionType = (Label)ri.FindControl("intQuestionType"); 
    int intQuestion = Convert.ToInt32(QuestionId.Text); 
    int intQuestionType = Convert.ToInt32(QuestionType.Text); 

    var txtAnswer = (TextBox)ri.FindControl("txtAnswers"); 

    if (txtAnswer == null) 
    { 
     intAnswer = 0; 
     strAnswer = Request.Form[txtAnswer.Text]; 
     strAnswer = strAnswer + txtAnswer.Text; 
     strAnswer = strAnswer + "No Data"; 
    } 
    else 
    { 
     intAnswer = 0; 
     strAnswer = Request.Form[txtAnswer.Text]; 
     strAnswer = strAnswer + "-" + Request.Form[txt.Text]; 
     strAnswer = strAnswer + "Test Stuff"; 
     strAnswer = strAnswer + txtAnswer.Text; 
    } 
} 

的价值来自于标签背面没有问题,但文本框只是不会工作,因为你可以看到香港专业教育学院使用这两种的Request.Form [txtAnswer .Text]和txtAnswer.Text,但都没有工作。

请任何人都可以帮忙。

+1

获取行索引 - 请参阅:http://*.com/questions/13648037/how-to-get-updated-textbox-value-from-repeater – NoChance

变化:

strAnswer = Request.Form[txtAnswer.Text]; 

到:

strAnswer = txtAnswer.Text; 

这应该工作。您已经参照了以下文本框:

var txtAnswer = (TextBox)ri.FindControl("txtAnswers"); 
+1

rs82uk声明他也尝试txtAnswer.Text,并且它没有工作。 – CodeCanuck

+0

@ Stealth22有趣。它应该工作,除非他们因回发而失去价值。 – PhillyNJ

+2

我怀疑它是因为数据正在被重新绑定(是一个单词?),当回发发生时。中继器重新载入数据=文本框失去价值。 – CodeCanuck

您是否将数据绑定到Page_Load中的Repeater?因为如果你不检查PostBack,数据将在按钮点击事件触发前重新填充!

protected void Page_Load(object sender, EventArgs e) 
{ 
     if (!Page.IsPostBack) 
     { 
      rptQuestions.DataSource = yourDataSource; 
      rptQuestions.DataBind(); 
     } 
} 

如果没有IF语句检查的IsPostBack值,那么将不考虑重新填充你的中继,这就是为什么标签的工作。 TextBox没有绑定的数据,所以输入的任何文本都会被删除。