2013-10-29 135 views
0

在此處繪製完整的空白,這應該非常簡單,但是我嘗試的任何操作都不起作用。無法從中繼器中的文本框中獲取文本

我只是想從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://stackoverflow.com/questions/13648037/how-to-get-updated-textbox-value-from-repeater – NoChance

回答

0

變化:

strAnswer = Request.Form[txtAnswer.Text]; 

到:

strAnswer = txtAnswer.Text; 

這應該工作。您已經參照了以下文本框:

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

rs82uk聲明他也嘗試txtAnswer.Text,並且它沒有工作。 – CodeCanuck

+0

@ Stealth22有趣。它應該工作,除非他們因回發而失去價值。 – PhillyNJ

+2

我懷疑它是因爲數據正在被重新綁定(是一個單詞?),當回發發生時。中繼器重新載入數據=文本框失去價值。 – CodeCanuck

2

您是否將數據綁定到Page_Load中的Repeater?因爲如果你不檢查PostBack,數據將在按鈕點擊事件觸發前重新填充!

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

如果沒有IF語句檢查的IsPostBack值,那麼將不考慮重新填充你的中繼,這就是爲什麼標籤的工作。 TextBox沒有綁定的數據,所以輸入的任何文本都會被刪除。

相關問題