无法从转发器中的文本框获取文本

本文关键字:文本 获取 取文本 转发器 | 更新日期: 2023-09-27 18:37:18

在这里画一个完整的空白,这应该非常简单,但我尝试的所有方法都不起作用。

我只是想从Repeater中的TextBox中获取价值.

<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,但两者都不起作用。

请谁能帮忙。

无法从转发器中的文本框获取文本

您是否将数据

绑定到Page_Load中的中继器?因为如果您不检查回发,数据将在按钮单击事件触发之前重新填充!

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

如果您没有 IF 语句检查 IsPostBack 值,那么无论如何它都会重新填充您的转发器,这就是标签工作的原因。文本框没有绑定任何数据,因此输入的任何文本都将被删除。

更改:

strAnswer = Request.Form[txtAnswer.Text];

自:

strAnswer = txtAnswer.Text; 

这应该有效。您已经有一个对文本框的引用,其中包含:

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