“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------无法将类型为“System.Web.UI.WebControls.DataGridLinkButton”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。 
//代码如下:void DataGrid_Update(Object sender,DataGridCommandEventArgs E)
{  
  ......  
  //OrderQuantity在数据库里是int型的
  cm.Parameters.Add(new SqlParameter("@OrderQuantity",SqlDbType.TinyInt)); 
  cm.Parameters.Add(new SqlParameter("@OrderID",SqlDbType.BigInt));  String colvalue=((TextBox)E.Item.Cells[1].Controls[0]).Text;
  cm.Parameters["@OrderQuantity"].Value=colvalue;
  cm.Parameters["@OrderID"].Value=dgorder.DataKeys[E.Item.ItemIndex];
  cm.Connection.Open();  ......
  cm.Connection.Close();
  BindGrid();
}
救命啊!
要取的是:
<asp:BoundColumn HeaderText="数量" DataField="OrderQuantity" />
这一个值
应该怎么取?

解决方案 »

  1.   

    this.DataGrid1.DataKeys[i],i是这个列的序号
      

  2.   

    String colvalue=((TextBox)E.Item.Cells[明显,这里的序号不对,请数清楚到底是第几列,按钮列/模版列/不可见的列等都算一列].Controls[0]).Text;
      

  3.   

    e.Item.Cells[i].Text第一列i为0,以此类推,隐藏列也算一列
    i 你自己看着办  不需要.Controls[0]了
      

  4.   

    你的第二列(cell[1])在编辑状态中是不是一个文本一个文本框,你的那列不是一个模板列吧,看看你有没有取错列的值.
      

  5.   

    string colvalue=((TextBox)E.Item.Cells[8].Controls[0]).Text;
    cm.Parameters["@OrderQuantity"].Value=(int)colvalue;“/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS0030: 无法将类型“string”转换为“int”源错误: 行 45: 
    行 46:   string colvalue=((TextBox)E.Item.Cells[8].Controls[0]).Text;
    行 47:   cm.Parameters["@OrderQuantity"].Value=(int)colvalue;
    行 48:   cm.Parameters["@OrderID"].Value=dgorder.DataKeys[E.Item.ItemIndex];
    行 49:   cm.Connection.Open();
     
      

  6.   

    肯定是这句有问题:
    String colvalue=((TextBox)E.Item.Cells[1].Controls[0]).Text;1、Cells[1]是不是你要的列,编号从0开始的,隐藏列也算。
    2、你要的那列是TextBox吗?看看是不是LinkButton
      

  7.   

    colvalue 不是数值 "1"、"2"、"3"...
      

  8.   

    行 47改为:  
    try{
     cm.Parameters["@OrderQuantity"].Value=Convert.ToInt32(colvalue);
    }
    catch{
      Response.Write("<script>alert('请输入数字');</script>");
      return;
    }
      

  9.   

    多谢大家!
    是我搞错了!
    应该把:
    cm.Parameters.Add(new SqlParameter("@OrderQuantity",SqlDbType.TinyInt)); 
    改为:
    cm.Parameters.Add(new SqlParameter("@OrderQuantity",SqlDbType.Int,4));