文本框不能在c#aspx中使用

时间:2014-02-06 09:41:01

标签: c# asp.net

我在c#(Visual Studio)中使用文本框时遇到问题。 当我写这篇文章时:

protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = gv.Rows[e.RowIndex];

    TextBox serial = (TextBox)row.Cells[1].Controls[0];
    TextBox name = (TextBox)(row.Cells[2].Controls[0]);
    TextBox cost = (TextBox)(row.Cells[3].Controls[0]);
    TextBox number = (TextBox)(row.Cells[4].Controls[0]);
    string query = String.Format("UPDATE games SET name='{1}', cost={2}, number={4} WHERE serial={0}",
                                serial.Text, name.Text, cost.Text, number.Text);

    SqlConnection connect = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(query, connect);
    connect.Open();
    cmd.ExecuteNonQuery();
    connect.Close();

    this.gv.EditIndex = -1;
    BindTheGridView();
}

我得到4个像这样的错误:

  

错误1'TextBox'不包含'Text'的定义,并且没有扩展方法'Text'可以找到接受类型'TextBox'的第一个参数(你是否缺少using指令或汇编引用?)< / p>

有人能告诉我为什么会发生这件事吗? tnx ...

3 个答案:

答案 0 :(得分:0)

尝试做这样的事情:

var serial = (sender as GridView).FindControl("serial") as TextBox;
var name = (sender as GridView).FindControl("name") as TextBox;
...
...

答案 1 :(得分:0)

找不到控件的原因是因为您实际上没有serial文本框等。一旦您的代码编译并执行完毕,您将拥有尽可能多的serial个文本框会行。您可以通过查看渲染页面的HTML来验证这一点;您会在ID /名称

中找到许多带有serial的文本框

您正在通过致电row来引用您感兴趣的GridViewRow row = gv.Rows[e.RowIndex]; - 这是您FindControl文本框的行。

所以尝试使用:

来找到它们
TextBox serial = (TextBox)row.FindControl("serial");

等。

作为旁注,gridview中的所有行都将通过您的方法执行;包括任何页眉和页脚。为了确保您不会遇到再次找不到文本框的问题,请指示您的代码仅处理该行实际上是数据行。

请在获得GridViewRow

之后将代码(代码if之后的代码包裹起来)包裹在代码中
row

答案 2 :(得分:0)

protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridViewRow row = gv.Rows[e.RowIndex];

    string serial = row.Cells[1].Controls[0];
    string name = row.Cells[2].Controls[0]);
    string cost = row.Cells[3].Controls[0]);
    string number = row.Cells[4].Controls[0]);
    yourtextbox_Id.text = serial;
    nametextbox.text = name;
    costtextbox.text = cost ;
    numbertextbox.text = number ;
// do like this

    string query = String.Format("UPDATE games SET name='{1}', cost={2}, number={4} WHERE serial={0}",
                                serial.Text, name.Text, cost.Text, number.Text);

    SqlConnection connect = new SqlConnection(connectionString);
    SqlCommand cmd = new SqlCommand(query, connect);
    connect.Open();
    cmd.ExecuteNonQuery();
    connect.Close();

    this.gv.EditIndex = -1;
    BindTheGridView();
}