Asp.net 无法从gridview上的文本框中获取值

Asp.net 无法从gridview上的文本框中获取值,asp.net,gridview,textbox,Asp.net,Gridview,Textbox,我在ASP.NET页面上有一个GridView,其中有一个TemplateField列,在ItemTemplate中有一个文本框。然后我有一个命令字段,它应该从这个文本框中提取文本,并在运行存储过程的SqlCommand中使用它 这是我的C#代码: 当我添加断点以查看intID和tbox.Text的值时,我得到了正确的ID,但tbox的文本是“” 我引用的两列的标记是 <asp:TemplateField HeaderText="SN"> <ItemTemplate>

我在ASP.NET页面上有一个GridView,其中有一个TemplateField列,在ItemTemplate中有一个文本框。然后我有一个命令字段,它应该从这个文本框中提取文本,并在运行存储过程的SqlCommand中使用它

这是我的C#代码:

当我添加断点以查看intID和tbox.Text的值时,我得到了正确的ID,但tbox的文本是“”

我引用的两列的标记是

<asp:TemplateField HeaderText="SN">
  <ItemTemplate>
    <asp:TextBox ID="txtSN" runat="server" MaxLength="20" Width="100px" />
  </ItemTemplate>
  <HeaderStyle BackColor="#171695" Font-Names="Arial" Font-Size="Small" ForeColor="White" Wrap="true" />
</asp:TemplateField>
<asp:BoundField DataField="Request" HeaderText="Request" ReadOnly="true" SortExpression="Request" />

此代码在什么事件中?您应该使用e.Item.FindControl。如果您确实得到了正确的控件,但文本为空,这意味着它要么没有被发回,要么在其他地方被清除。

我曾经遇到过同样的问题。我还必须从服务器上GridView中的文本框中检索文本值,并且总是得到一个空字符串。我必须为Gridview和文本框都设置EnableViewState=“false”,这就像一个符咒一样有效。

Gridview的OnRowCommand事件。我将尝试使用e.Item.FindControl。无法通过RunCommand访问e.Item,因为它使用GridViewCommandEventArgs。令人恼火的是,除了控件名之外,该代码与另一个Web表单相同。在这种情况下。。。不知道该告诉你什么。使用Fiddler并确保数据已发布。然后检查代码,确保它没有被其他地方覆盖/清除。我设法解决了这个问题,我删除了页面并重新开始,但代码略有不同,它工作得很好。我不确定是否有什么东西隐藏在那里,阻止了文本框被拾取,但它现在正在工作:)谢谢你的帮助在设法使代码工作后,它突然停止工作,我不知道为什么。上面包含了正在工作的更新代码。
<asp:TemplateField HeaderText="SN">
  <ItemTemplate>
    <asp:TextBox ID="txtSN" runat="server" MaxLength="20" Width="100px" />
  </ItemTemplate>
  <HeaderStyle BackColor="#171695" Font-Names="Arial" Font-Size="Small" ForeColor="White" Wrap="true" />
</asp:TemplateField>
<asp:BoundField DataField="Request" HeaderText="Request" ReadOnly="true" SortExpression="Request" />
protected void gvwSecond_RowCommand(object sender, GridViewCommandEventArgs e)
{
  if ((e.CommandName == "Confirm") || (e.CommandName == "Decline"))
  {
    int index = Convert.ToInt32(e.CommandArgument);
    GridViewRow row = gvwSecond.Rows[index];

    int secondID = int.Parse(row.Cells[1].Text);
    TextBox txtsn = ((TextBox)row.FindControl("txtSecSN"));
    string sn = txtsn.Text;