2014-04-29 40 views
2

我有一個嵌套的轉發器,我在頁腳模板中使用了一個文本框。我想要按鈕點擊獲取textbox.text值。這是我轉發:如何獲取頁腳使用嵌套Repeater的代碼後面的項目值?

<asp:Repeater ID="rprSSFirst" runat="server" OnItemDataBound="rprSSFirst_ItemDataBound" > 

<HeaderTemplate> 
    </HeaderTemplate> 
      <ItemTemplate> 
       //******Some Items****** 
       <asp:Repeater ID="rprSSNested" runat="server" > //Nested Repeater 
        <HeaderTemplate> 
        </HeaderTemplate> 
         <ItemTemplate> 
          //******Some Items****** 
         </ItemTemplate> 
        <FooterTemplate> 
         <div style=" padding: 20px 35px;" id='ajax'> 
         <asp:TextBox ID="textbox" TextMode="MultiLine" Columns="50" Rows="10" runat="server"></asp:TextBox> 
         <br /> 
         <asp:Button ID="Button2" runat="server" OnClick="btn_Save_Click" Text="Save" />        
         </div> 
        </FooterTemplate> 
       </asp:Repeater> 
       </ItemTemplate> 
      <FooterTemplate> 

      </FooterTemplate> 
     </asp:Repeater> 

//在代碼後面

protected void btn_Save_Click(object sender, EventArgs e) 
{ 
TextBox txtAns = (TextBox)rprSSFirst.Controls[rprSSFirst.Controls.Count - 1].FindControl("textbox"); 
} 

txtAns值爲NULL。如何獲取頁腳項目textbox按鈕點擊的值?或者其他方式?

感謝您的回答。

回答

4

您必須首先找到兩個控件坐在的嵌套RepeaterItem。您可以通過鑄造得到它NamingContainer

protected void btn_Save_Click(object sender, EventArgs e) 
{ 
    Button btnSave = (Button) sender; 
    RepeaterItem item = (RepeaterItem) btnSave.NamingContainer; 
    TextBox txtAns = (TextBox) item.FindControl("textbox"); 
} 
+0

謝謝你的回答 –

0

您可以使用CommandName屬性類似這樣的嵌套中繼器的按鈕:

<asp:Repeater ID="rprSSNested" runat="server" OnItemCommand="rprSSNested_ItemCommand" > 
       <HeaderTemplate> 
       </HeaderTemplate> 
        <ItemTemplate> 
         //******Some Items****** 
        </ItemTemplate> 
       <FooterTemplate> 
        <div style=" padding: 20px 35px;" id='ajax'> 
        <asp:TextBox ID="textbox" TextMode="MultiLine" Columns="50" Rows="10" runat="server" ></asp:TextBox> 
        <br /> 
        <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Save" CommandName="cmd" CommandArgument="arg"/>        
        </div> 
       </FooterTemplate> 
      </asp:Repeater> 

而在C#這樣的代碼添加事件:

protected void rprSSNested_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Footer) 
    { 
     if (e.CommandName == "cmd") 
     { 
      string ss = ((TextBox)e.Item.FindControl("textbox")).Text; 
      Response.Write(ss); 
     } 
    } 
} 
相關問題