首页 新闻 搜索 专区 学院

关于GridView的更新问题?

0
悬赏园豆:20 [已解决问题] 解决于 2012-04-05 15:21

我的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>");
 
    }

 

麻烦各位了,我好急的!

古镇的废墟的主页 古镇的废墟 | 初学一级 | 园豆:146
提问于:2012-03-31 15:04
< >
分享
最佳答案
0

比如说      string E = ((HyperLink)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim();  试一下

收获园豆:20
zhengyingcan | 初学一级 |园豆:12 | 2012-04-02 20:52

thanks   就是这个了!

古镇的废墟 | 园豆:146 (初学一级) | 2012-04-05 15:19
其他回答(3)
0

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

((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

檢查儀下代碼

無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-31 15:42

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

支持(0) 反对(0) 古镇的废墟 | 园豆:146 (初学一级) | 2012-03-31 16:36

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

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-31 16:49

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

支持(0) 反对(0) 古镇的废墟 | 园豆:146 (初学一级) | 2012-03-31 21:23

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

支持(0) 反对(0) 無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-01 08:59
0

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

happydaily | 园豆:377 (菜鸟二级) | 2012-03-31 18:45

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

支持(0) 反对(0) 古镇的废墟 | 园豆:146 (初学一级) | 2012-03-31 21:27
0

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

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

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

或者

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

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

水晶途途 | 园豆:1434 (小虾三级) | 2012-03-31 23:16

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

支持(0) 反对(0) 古镇的废墟 | 园豆:146 (初学一级) | 2012-04-01 10:50

@古镇的废墟: 

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

支持(0) 反对(0) 水晶途途 | 园豆:1434 (小虾三级) | 2012-04-01 12:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册