在asp.net中无法使用gridview控件RowUpdating事件实现编辑功能。

2024-12-14 00:25:16
推荐回答(4个)
回答1:

看这个报错就知道是怎么回事了:

无法将类型为“System.Web.UI.WebControls.DataControlLinkButton”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。

你的Cells[1]列对应的列不是TextBox。而是LinkButton。
这样应该可以了:((LinkButton)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();

注意:Cells是从0开始的。

回答2:

首先声明,ID通常应该不修改吧
然后,在GridView的一个DatakeyNames属性上把写上id,也就是你的UserID
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//得到你要修改的当前行的ID
string id = GridView1.DataKeys[e.RowIndex].Value.ToString();

string b1= ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;

//TextBox1是你要修改的那个控件的ID,你应该知道,我建议最好这样写,不要用Rows[e.RowIndex].Cells[1].Controls[0]),这个很容易写错

string b2= ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;
string sql = "update books set UserPwd = '"+b1+"',UserSort='" + b2 + "' where id = " + id;

DbHelperSQL.ExecuteSql(sql);//这是我的执行SQL的Dbhelper类 , 你要是没有, 就写你自己的 ,你那个下面的应该没问题

GridView1.EditIndex = -1;
BindData();
}

回答3:

转换成模板列试试


'>


<%#Eval("StartTime") %>


cs中:
string text= (gvTyppeNotice.Rows[e.RowIndex].FindControl("txtStartTime") as TextBox).Text.Trim();
我是这样做的可以实现

回答4:

((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
改为
((LinkButton)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
就可以了!