在 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")%>' />
</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 文本框中的值。
希望对以后的人有所帮助....
我有一个带有 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")%>' />
</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 文本框中的值。
希望对以后的人有所帮助....