这是UI中的代码
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btn" runat="server" CommandName="Edit" Text="AFE" />
</ItemTemplate>
</asp:TemplateField>
--</Columns>
我想在单击按钮编辑时获取同一页面中文本框中所有字段的详细信息。我尝试使用:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Edit")
{
GridViewRow Row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
string text = Row.Cells[2].Text;
}
但我在字符串文本中得到“”..
这是我的网格视图的屏幕截图
答案 0 :(得分:4)
command argument
中存储的行索引查找单击Edit
按钮的行。TextBox
。然后获取Text
的{{1}}。
TextBox
在ASPX页面中,您需要处理行命令事件,如下所示:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName == "Edit")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow clickedRow = CustomersGridView.Rows[index];
TextBox myTextBox = (TextBox)clickedRow.Cells[2].FindControl("TextBoxName");
string text = myTextBox.Text;
}
}
答案 1 :(得分:0)
您可以使用以下代码访问GridViewRow
(注意:Button
必须是具有CommandName/CommandArgument
的控件):
var row = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
然后只需在FindControl
上使用found row
方法查找目标控件,代表:
var txtSomething = (TextBox)row.FindControl("txtSomething");
您还可以使用RowIndex
访问row.RowIndex
。
我建议避免使用row.Cells[INDEX].FindControl()
,只是row.FindControl
工作正常,如果您更改标记并添加/删除某些内容,则定位特定cell
并不好列,(也许)您还需要更新INDEX
,所以不要这样做:)
答案 2 :(得分:-1)
您需要在单元格中找到TextBox控件并从中获取值。
string text = (TextBox)Row.FindControl["MyTextBoxId"].Text;