我在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 ...
答案 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();
}