我在gridview里利用模版列,RowDataBond事件中是这样写的:
protected void GW_Ctable_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
UserEn ew = new UserEn();
UserBLL ub = new UserBLL();
TextBox txtID = (TextBox)e.Row.Cells[0].FindControl("txtID");
TextBox txtName = (TextBox)e.Row.Cells[1].FindControl("txtName");
TextBox txtPassword = (TextBox)e.Row.Cells[2].FindControl("txtPassword");
DataRow row = ((DataRowView)(e.Row.DataItem)).Row;
txtID.Text = row["ID"].ToString();
txtName.Text = row["Name"].ToString();
txtPassword.Text = row["Password"].ToString(); }
可是在更新的RowUpdating事件中怎么取的改变后的值呢
我是这么写的
ID = ((TextBox)GW_Ctable.Rows[e.RowIndex].Cells[0].Controls[0]).Text.ToString();
可是报无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。
怎么写才正确呀,大家帮帮忙
protected void GW_Ctable_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
UserEn ew = new UserEn();
UserBLL ub = new UserBLL();
TextBox txtID = (TextBox)e.Row.Cells[0].FindControl("txtID");
TextBox txtName = (TextBox)e.Row.Cells[1].FindControl("txtName");
TextBox txtPassword = (TextBox)e.Row.Cells[2].FindControl("txtPassword");
DataRow row = ((DataRowView)(e.Row.DataItem)).Row;
txtID.Text = row["ID"].ToString();
txtName.Text = row["Name"].ToString();
txtPassword.Text = row["Password"].ToString(); }
可是在更新的RowUpdating事件中怎么取的改变后的值呢
我是这么写的
ID = ((TextBox)GW_Ctable.Rows[e.RowIndex].Cells[0].Controls[0]).Text.ToString();
可是报无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。
怎么写才正确呀,大家帮帮忙
解决方案 »
- win7下打开vs2003项目报错,找不到路径,求解决!
- 技术指导
- 静态变量在asp.net的生命周期到底有多长, 哪些情况会导致它消失? 谢谢
- 在JS区没人回答,来这里问,一个翻屏后图片不能跟随鼠标的问题!
- 口令问题,二次访问自动呈现,怎么办?请高人指点
- [求助]想做个2分钟的倒记时程序
- 2个问题每个10分
- DataSet中能不能对两个表进行操作呀?
- 高分求救!!! 还是cookies问题 我已经问了几次,最终想要的的结果还是没解决!!!
- asp.net中使用QueryString在页面中传值需要特别注意什么吗?
- 100分,求以下网页的效果,在线,急,[网页保存了多次也没有,弄下来]
- sql2005导入表后主健和默认值都丢失了
然后在RowUpdateing事件中
用GridView1.DataKeys[(int)e.RowIndex].Value.ToString();能不能找到?
或者用((TextBox)GW_Ctable.Rows.FindControl("controlID")).Text
ls正确,不过不是取得更改后的值,和我想的不一样啊
可是报无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型说明控件Controls[0]是LiteralControl类型 你看看你在模板列放的是不是TextBox
不是的话 不能强制转换为TextBox还有 你如果是模板列自定义的控件,就用FindControl("controlID")
如果是不是模板列就用Controls[0]
TextBox txtID = (TextBox)GW_Ctable.Rows[e.RowIndex].Cells[0].FindControl("txtID");
分析及解决问题