在 GridView 中的 TemplateField 中获取 Panel in <table> 中 TextBox 的值

Get value of TextBox in Panel in <table> in TemplateField in GridView

我有一个带有 TemplateField 的 GridView。 ItemTemplate 内有 2 个文本框,然后是 <table>Panel。在该面板中还有另一个 TextBox。
如何获取最后一个 TextBox 的值?
我有 gridview 行的索引,但我不知道如何从那里开始。
(来自数据库的数据在页面加载时绑定)。

<asp:ScriptManager runat="server"></asp:ScriptManager>
<asp:GridView ID="grv_Four_Rows" runat="server" AutoGenerateColumns="False"
    ShowHeader="False" CellPadding="3" CssClass="myGrid" DataKeyNames="Test1_First_Name">
    <RowStyle BackColor="#b5c7de" />
    <AlternatingRowStyle BackColor="#d1e0e0" />
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:TextBox ID="txbFirstName" runat="server" CssClass="myTextBox" ReadOnly="false" Text='<%# Eval("Test1_First_Name")%>'></asp:TextBox>
                <asp:TextBox ID="txbLastName" runat="server" CssClass="myTextBox" ReadOnly="true" Text='<%# Eval("Test1_Last_Name")%>'></asp:TextBox>
                <table style="width: 350px;">
                    <asp:Panel ID="upp_2nd_row" runat="server" Visible="true">
                         <td style="float: left">
                             <a style="color: red; font-weight: bold;">Address: </a>
                             <asp:TextBox ID="txbAddress" Width="200px" Font-Bold="true" runat="server" Text='<%# Eval("Test1_Address")%>' />&nbsp;&nbsp;
                         </td>
                         <td style="float: right">
                             <asp:Button ID="btn_Edit_Details" runat="server" Text="Go" Font-Bold="true"
                                    OnClick="my_Update_details" CommandArgument='<%#DataBinder.Eval(Container, "DataItemIndex")%>' />
                         </td>
                    </asp:Panel>
                </table>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<br />
<asp:Label ID="lblMessage1" runat="server" BackColor="Yellow" Font-Bold="true"></asp:Label>

C# 隐藏代码:

    protected void my_Update_details(object sender, EventArgs e)
    {
        string my_row_index = (sender as Button).CommandArgument;
        lblMessage1.Text = "Row Index: " + my_row_index;
    }

当我单击任意行中的 "Go" 按钮时,会触发 my_Update_details 事件。它所做的只是显示 gridview 当前行的索引,并且值是正确的。
但是在 my_Update_details 中,我还想选择文本框的值,这就是我被卡住的地方(用户应该更改他们的值,而 'Go' 按钮应该更新数据库)。在下面的示例中,我单击了第 4 行中的按钮,它正确地将索引显示为 3 :

这就是它的工作原理:首先我绞尽脑汁几天,然后我 post 在 SO 中提出一个问题,然后 - 2 分钟后我找到了解决方案...
我所做的只是在 my_Update_details 方法(第二行)中添加一行:

    protected void my_Update_details(object sender, EventArgs e)
    {
        string my_row_index = (sender as Button).CommandArgument;
        TextBox AAAAAA = (TextBox)grv_Four_Rows.Rows[Convert.ToInt32(my_row_index)].Cells[0].FindControl("txbAddress");
        lblMessage1.Text = "Address: " + AAAAAA.Text;
        lblMessage2.Text = "Row Index: " + my_row_index;
    }

现在我得到:

这正是我所需要的:获取 txbAddress 文本框中的值。
希望对以后的人有所帮助....