string strconn = ConfigurationSettings.AppSettings["conn"];
SqlConnection conn = new SqlConnection(strconn);
conn.Open();
SqlCommand cm1=new SqlCommand ("Proc",conn);
cm1.Parameters.Add("@BID",SqlDbType.Int);
cm1.CommandType =CommandType.StoredProcedure;
string bidv=e.Item.Cells[0].Text.ToString ();
cm1.Parameters["@BID"].Value =Convert.ToInt32("bidv");
cm1.ExecuteNonQuery();
Proc为一存储过程
在倒数第二行出错,说是格式不对,可是bidv绝对为int啊~

解决方案 »

  1.   

    ("bidv");有双引号绝对是字符串
      

  2.   

    Convert.ToInt32("bidv"); 
    "bidv"是字符串不能转化为 整形(Int32)
      

  3.   

    那改为
    Convert.ToInt32("25"); 
    试试看还有问题吗
    这样起码知道问题出在哪里了
      

  4.   

    int64(@163.com) 
    直接用int 是好使的
    跟踪发现bidv 一直都是数字啊
      

  5.   

    那你还是检查 bidv  赋值以后,有没有被无意中改动过,或者你有嵌套定义,或者是不是在循环中定义
      

  6.   

    你是放到grid里的啊,
    把代码放到if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
                                }
    里面去
      

  7.   

    可能是int64(@163.com) 说的原因吧,首先是head吧,其次是item
      

  8.   

    咦?
    加上if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
                                }就好用了??
    这是为什么?可否麻烦给讲一讲?