我也需要这样的功能,我的是在GridView每一行后加一个checkbox,选择单行的话插入操作没有问题,只要一选择多行,就会出错。提示:varchar 值 '681,684   ' 转换为数据类型为 int 的列时发生语法错误。我的代码如下:
string Id_str = Request.Form["Checkbox"];
string Hid = check.getlist("abc", Id_str).Tables[0].Rows[0]["Hid"].ToString().Trim();
string time = DateTime.Now.ToShortDateString();
        //这里用存储过程获取选中行的其他字段
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
        conn.Open();
string sql = "insert into test(Hid,creattime)values('" + Hid + "','" + time + "')";
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.ExecuteNonQuery();
        COMP.Jscript.AlertAndRedirect("提交成功!", "Defaulta.aspx");
        conn.Close();拿来让高手帮看看,错在哪里,应该怎么改,谢谢!

解决方案 »

  1.   

    应该根据选择的多行预先生成这样的一个sql:
    declare @d datetime
    set @d=getdate()
    insert test (Hid,creattime)
    select 选中的第1条的hid,@d
    union all select 选中的第2条的hid,@d
    union all select 选中的第3条的hid,@d
    再一次提交
      

  2.   

    varchar 值 '681,684  '是对应HID那一列吗?
      

  3.   

    varchar 值 '681,684  '不能转换成INT类型
    直接变成681684就行了
      

  4.   

    你是不是把界面上Hid对应的值都放在一起了,应该分开,多行插入。
      

  5.   

    当然是一条语句、一次性插入最好(多个记录集可用union联接成一个记录集)
      

  6.   

    确实是将界面Hid对应的值放在一起了,关键现在想实现的就是这个功能啊,点击一个按钮,选中的行全部插入我再试下sz_haitao 的办法~
      

  7.   

    另回you_tube 、sdhdy 关键是数据库中就没有  varchar 值 '681,684  '
    不知道怎么出来个这
      

  8.   

    是不是.net的函数把 选中的681和684这2条 提取为'681,684'了?
    没用过.net