各位大侠请指教: protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {        string str = "update BBSCategory set CategoryID='"
             + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',CategoryName='"
             + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',CategoryDes'"
             + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where id='"
             + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
        SqlCommand cmd = new SqlCommand(str, conn);
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
        GridView1.EditIndex = -1;
        binddata();    }
提示:
无法将类型为“System.Web.UI.WebControls.DataControlLinkButton”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”
错误不知道为什么。

解决方案 »

  1.   

    类型不一致
    检查是否是LinkButton
      

  2.   

    有可能你的GridView的第一列(Cells[1])的单元格类型为LinkButton,而不是TextBox
      

  3.   

    你转换的全是textbox,如果不是textbox那肯定转换失败了
      

  4.   

    string YuXiMark = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString();
    我项目里这样做,没问题,肯定是楼主的GridView1要转化为TextBox的控件不是<asp:BoundField 
    如果你想把<asp:TemplateField 里的控件内容转为TextBox应使用(TextBox)GridView1.Rows[e.RowIndex].FindControl("LinkButton1")
      

  5.   

    有可能你的GridView的单元格类型为LinkButton,而不是TextBox