我有一个带TemplateField
的GridView。 ItemTemplate
内有2个TextBox,然后是<table>
Panel
。在那个小组中有另一个TextBox
如何获取最后一个TextBox的值?
我有gridview排的索引,但我不知道怎么从那里开始。
(来自DB的数据在页面加载时绑定)。
<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;
}
当我点击&#34; Go&#34;任何行中的按钮都会触发my_Update_details
事件。它只是显示gridview的当前行索引,值正确。
但是在my_Update_details
中,我还想选择文本框的值,以及我被卡住的地方(用户应该更改其值和&#39; Go&#39;按钮应该更新DB)。在下面的示例中,我单击了第4行中的按钮,它正确地将索引显示为3:
答案 0 :(得分:0)
所以这就是它的工作原理:首先我绞尽脑汁待几天,然后我在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文本框中的值。
希望它能帮助将来的某个人......