看这个报错就知道是怎么回事了:
无法将类型为“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开始的。
首先声明,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();
}
转换成模板列试试
<%#Eval("StartTime") %>
cs中:
string text= (gvTyppeNotice.Rows[e.RowIndex].FindControl("txtStartTime") as TextBox).Text.Trim();
我是这样做的可以实现
((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
改为
((LinkButton)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
就可以了!