none
gridview编辑问题 RRS feed

  • 问题

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

    在点击编辑按钮时,出现以上的错误!
    2009年3月16日 9:23

答案

  • 不要使用
    this.gv_PaManage.Rows[e.RowIndex].Cells[3].Controls[0]

    这种方法找控件,是很容易出错的,并且你增加了列数之后,代码都要修改,里面其中一个控件是Label,你当成了TextBox

    好的做法:改成


    ((TextBox)(this.gv_PaManage.Rows[e.RowIndex].FindControl("TextBoxID"))).Text
    孟宪会
    2009年3月16日 11:28
    版主

全部回复

  • 明显控件转换没对,你查查那里使用的了隐式转换,或把代码帖出来
    知识改变命运,奋斗成就人生!
    2009年3月16日 9:34
    版主
  • 你FindControl指定的不是TextBox控件的id吧
    孟宪会
    2009年3月16日 9:41
    版主
  • 不是。
     p_Data.GoodsName=((TextBox)(this.gv_PaManage.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString(); 
            p_Data.Brand=((TextBox)(this.gv_PaManage.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString(); 
            p_Data.Price=float.Parse(((TextBox)(this.gv_PaManage.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString()); 
            p_Data.Area=((TextBox)(this.gv_PaManage.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString(); 
            p_Data.IsDiscount=((TextBox)(this.gv_PaManage.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString(); 
            p_Data.IsHot=((TextBox)(this.gv_PaManage.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString(); 
     

    2009年3月16日 10:03
  • 我调试的时候是这个部分出问题了。
    2009年3月16日 10:03
  • 不要使用
    this.gv_PaManage.Rows[e.RowIndex].Cells[3].Controls[0]

    这种方法找控件,是很容易出错的,并且你增加了列数之后,代码都要修改,里面其中一个控件是Label,你当成了TextBox

    好的做法:改成


    ((TextBox)(this.gv_PaManage.Rows[e.RowIndex].FindControl("TextBoxID"))).Text
    孟宪会
    2009年3月16日 11:28
    版主
  • 怎么得到TextBoxID了。我用的是控件自带的textbox?
    2009年3月17日 1:02
  • textboxid就在你的aspx页面里面啊
    孟宪会
    2009年3月17日 2:45
    版主