簡體   English   中英

單擊同一行中的按鈕時,在轉發器控件中獲取文本框值

[英]Get textbox value in repeater control when button in same row is clicked

我有這個中繼器:

 <asp:Repeater ID="rptImages" runat="server">
                <HeaderTemplate>
                    <table>
                        <tr>
                            <th>Image</th>
                            <th>Caption</th>
                            <th>&nbsp;</th>
                            <th>Update File</th>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Image Width="108px" Height="67px" runat="server" ID="imgDb" ImageUrl='<%# Eval("imageUrl")  %>' />
                        </td>
                        <td>
                            <asp:TextBox runat="server" style="margin-left: 5px; margin-right: 5px;" ID="txtCaption" Text='<%# Eval("caption")  %>'></asp:TextBox>
                        </td>
                        <td>
                             <td><asp:FileUpload ID="fu" runat="server" /></td>
                    <td><asp:Button ID="btn" runat="server" Text="Update" CssClass="btn btn-info" CommandArgument='<%# Eval("id") %>' OnClick="btn_OnClick" /></td>
                            <td><asp:Button runat="server" ID="btnDelete" CssClass="btn btn-danger" CommandArgument='<%# Eval("id") %>' OnClick="btnDelete_OnClick" Text="Delete" /></td>
                            <td><asp:HiddenField ID="lblC" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "id") %>'></asp:HiddenField></td>
                        </td>
                    </tr>

                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>

我想知道如何從單擊更新按鈕的行中獲取文本框。 我應該使用什么邏輯來獲得所需的價值?

您可以通過處理按鈕上的Click事件,然后獲取其父控件來做到這一點。 但我建議改為處理轉發器的命令:

<asp:Repeater ID="rptImages" runat="server"
              OnItemCommand="rptImages_ItemCommand">

從按鈕中刪除處理程序,但保留命令arg。 如果還有其他控件從轉發器中發送命令,則可能還需要設置命令名稱:

<asp:Button runat="server" ID="btnDelete" CssClass="btn btn-danger"
            CommandArgument='<%# Eval("id") %>' 
            Text="Delete" />

在這后面的代碼中變得微不足道:

protected void rptImages_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
    TextBox t = e.Item.FindControl("txtCaption") as TextBox;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM