2012-11-30 23 views
1

我有一個repeater控制如下所列。它有一個textbox控制。當點擊一個save button時,我需要從文本框中獲取更新的文本。我有以下代碼;但是當我拿到文本框文本時它給了我舊的價值。如何從Repeater獲取更新的Textbox值?

我們如何獲得更新的文本?

代碼隱藏

protected void Save_Click(object sender, EventArgs e) 
    { 

     foreach (RepeaterItem item in repReports.Items) 
     { 
      if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) 
      { 

       string updatedEmail = ((TextBox)item.Controls[5]).Text; 
       string originalEmail = ((HiddenField)item.Controls[7]).Value; 


      } 
     } 
    } 

控制標記

<div class="repeaterTableBorder"> 
       <asp:Repeater ID="repReports" runat="server"> 
        <ItemTemplate> 
         <div id="repeaterIdentifier" class="repeaterIdentifier"> 
          <div class="reportTitle"> 
           <%# Eval("ReportName") + ":"%> 
           <asp:HiddenField ID="hdnLastChangeTime" runat="server" Value= '<%# ((DateTime)Eval("RecordSelectionTime")).ToString("MM/dd/yyyy hh:mm:ss.fff tt")%>' /> 
           <asp:HiddenField ID="hdnReportID" runat="server" Value='<%# Eval("ReportTypeCode")%>' /> 
          </div> 
          <div class="reportFrequency"> 
           <%# " Frequency - Weekly" %> 
          </div> 
         </div> 
         <div class="reportContent"> 
          <div class="repeaterLine"> 
           <asp:TextBox ID="txtEmailRecipients" runat="server" class="textEdit" 
            Text='<%# Eval("ExistingRecipients") %>' 
            TextMode="MultiLine"></asp:TextBox> 
           <asp:HiddenField ID="hdnOriginalRecipients" runat="server" Value='<%# Eval("ExistingRecipients")%>' /> 
          </div> 
         </div> 

        </ItemTemplate> 
       </asp:Repeater> 
      </div> 

回答

8

我認爲你要綁定的Repeater到它的DataSource也回發。你應該這樣做只有if(!IsPostBack)。否則,這些值將被覆蓋。

protected void Page_Load(Object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     // databinding code here 
    } 
}