【问题标题】:Get textbox value in repeater control when button in same row is clicked单击同一行中的按钮时,在转发器控件中获取文本框值
【发布时间】:2015-11-24 17:09:43
【问题描述】:

我有这个中继器:

 <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>

我想知道如何从单击更新按钮的行中专门获取文本框。我应该使用什么逻辑来获得我需要的价值?

【问题讨论】:

    标签: c# asp.net repeater asprepeater datarepeater


    【解决方案1】:

    您可以通过处理按钮上的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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-16
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多