为了账号安全,请及时绑定邮箱和手机立即绑定

关于GridView的更新问题?

关于GridView的更新问题?

眼眸繁星 2018-12-06 15:30:44
我的GridView里面绑定了一个CommandField字段,我点击更新的时候 提示: Message="无法将类型为“System.Web.UI.WebControls.HyperLink”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。" 这是我绑定的更新事件代码:  protected void RowUpdating(object sender,GridViewUpdateEventArgs e)    {        string A = GridView1.DataKeys[e.RowIndex].Value.ToString();        string B = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim();        string C = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim();        DateTime D = DateTime.Now;         string E = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();        string F = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim();        string G = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim();        string s = "update  news set title='"+B+"',source='"+C + "',publictime='"+D+"',newscontent='"+E +"',picture='"+ F +"',hits='"+G +"'where newsID='"+ A+"'";               M.esql(s);        Response.Write("<script language=javascript> alert('数据更新成功!');window.location='ManagerNews.aspx'</script>");     }   麻烦各位了,我好急的!
查看完整描述

11 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

你這樣寫代碼是有問題的:

((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0]))

應該是 :TextBox a=((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])) as TextBox;

 

if(a!=null){

才是textbox,否則是是哦。

}

你那個錯誤,說明有的不是textbox,有的是System.Web.UI.WebControls.HyperLink

檢查儀下代碼

查看完整回答
反对 回复 2019-01-07
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

不懂  我就是要将GridView里面的数据更新到数据库  还请你直接教教我怎么做吧

查看完整回答
反对 回复 2019-01-07
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

@古镇的废墟: 這個也一下說不清楚,你可以google一下。

查看完整回答
反对 回复 2019-01-07
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

@無限遐想: 网上都是一律的,对我也没有作用,网上的说的GridView里面都没有HyperLink字段,所以可以转!

查看完整回答
反对 回复 2019-01-07
?
茅侃侃

TA贡献1842条经验 获得超21个赞

@古镇的废墟: GridView裏面的內容,是你自己定義的。如果你全部定義textbox ,那麼你的那個可以運行正確。

查看完整回答
反对 回复 2019-01-07
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

为什么要自己写代码呢?gridview本身就自带新增,编辑,删除功能啊?不设计界面3分钟就搞定了.1L已经说得很明白了,你把控件都转成Textbox去读取它的值不错,关键是你里面某一列是个HyperLink(超链接应该知道吧?),系统转不了TEXTBOX

查看完整回答
反对 回复 2019-01-07
?
jeck猫

TA贡献1909条经验 获得超7个赞

嗯  就是提示这一列不能转换啊!那我要更新到数据库怎么办呢?自带的功能根本不好用,好多报错。还麻烦您给点意见

查看完整回答
反对 回复 2019-01-07
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

你UI的代码是怎样的,是用的模板列吗?如果是的,请参照下面的方法

例如:这一行的第一列的某个文本框的ID为txtTest,在更新这一行的时候获取txtTest的值的代码为

((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtTest")).Text.Trim();

或者

((TextBox)GridView1.Rows[e.RowIndex].Cells[0].FindControl("txtTest")).Text.Trim();

可以不定位到单元格的,因为如果在后期,你想在这一列之前加上一列,那么你的列索引就要变了。

查看完整回答
反对 回复 2019-01-07
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我不是用的模版,使用的CommandField字段,那要怎么办呢?

查看完整回答
反对 回复 2019-01-07
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

@古镇的废墟: 

要看看你UI的代码,才知道具体是怎么回事。

查看完整回答
反对 回复 2019-01-07
  • 11 回答
  • 0 关注
  • 517 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信