无法从gridview上的文本框中获取价值

时间:2010-02-24 12:28:00

标签: asp.net gridview textbox

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

这是我的C#代码:

int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = this.gvwSNConfirm.Rows[index];
TableCell intID = selectedRow.Cells[1];
int reqID = int.Parse(intID.Text);
// Get the SN from the text box on the selected row
TableCell snCell = selectedRow.Cells[0];
TextBox tbox = (TextBox)staffNum.FindControl("txtSN");
string stSN = tbox.Text.ToString();

当我添加断点以查看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" />

任何人都可以提供任何帮助,为什么我无法从文本框中获取文本?它第一次工作,但随后所有的tbox文本值都是“”。

非常感谢

安迪

新法典(05/03/2010):

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;

2 个答案:

答案 0 :(得分:1)

此代码中包含哪些事件?你应该e.Item.FindControl。如果您确实获得了正确的控制权,但Text是空的,这意味着它要么没有被回发,要么被其他地方清除。

答案 1 :(得分:1)

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