我做的系统是winform形式的,我在vs2005中的 DataGridView中一共添加5列,其中有一列是空列,与数据库中的UserID字段进行绑定,并将其隐藏.
然后其余四列分别与UserName,UserSex,UserArea,UserEmail字段进行绑定.这些都是在 DataGridView的Columns属性中设置的.
现在我想删除DataGridView中的一条记录,那么我首先选中一行,然后单击"删除"按钮,原理是根据选中的记录行号,获得DataGrid对象中待删除的记录的唯一索引,并根据待删除记录的索引,找到对应记录的UserID值,来删除.但以下代码执行的时候出现错误,提示找不到UserID,各位朋友帮帮我该怎么解决啊?
以下是代码:
      //删除联系人名单
        private void button4_Click(object sender, EventArgs e)
        {
            //获得选中的索引
            int index = UserDgv.SelectedRows[0].Index;
            //初始化SqlCommand对象
            SqlCommand newCmd = new SqlCommand();
            //根据隐藏列UserID删除记录
            newCmd.CommandText = "DELETE FROM UserInfor WHERE UserID=@UserID";
            //填充参数类型和参数值
            newCmd.Parameters.Add("UserID", SqlDbType.Int);
            newCmd.Parameters["UserID"].Value = UserDgv.Rows[index].Cells["UserID"].Value.ToString();
           
            //执行Delete语句
            DBManage.ExecuteNonQuerySql(newCmd);
            FillUserInfor();        }

解决方案 »

  1.   

    private void button4_Click(object sender, EventArgs e) 
            { 
                //获得选中的索引 
                string UserID = UserDgv.SelectedRows[0].Cells["UserID(这个是你datagridview中那个实际的列名)"]
                //初始化SqlCommand对象 
                SqlCommand newCmd = new SqlCommand(); 
                //根据隐藏列UserID删除记录 
                newCmd.CommandText = "DELETE FROM UserInfor WHERE UserID= '"+ UserID +"'"; 
                //执行Delete语句 
                DBManage.ExecuteNonQuerySql(newCmd); 
                FillUserInfor();         } 
      

  2.   

    上面的有点小错误
    private void button4_Click(object sender, EventArgs e)  
            {  
                //获得选中的索引  
                string UserID = UserDgv.SelectedRows[0].Cells["UserID(这个是你datagridview中那个实际的列名)"].value.tostring(); 
                //初始化SqlCommand对象  
                SqlCommand newCmd = new SqlCommand();  
                //根据隐藏列UserID删除记录  
                newCmd.CommandText = "DELETE FROM UserInfor WHERE UserID= '"+ UserID +"'";  
                //执行Delete语句  
                DBManage.ExecuteNonQuerySql(newCmd);  
                FillUserInfor();          }  
      

  3.   

    GridView1.DataKeyNames = new string[] { "主键" }; 
    写在LOAD中. protected void btnDel_Click(object sender, EventArgs e) 

    for (int i = 0; i < this.GridView1.Rows.Count; i++) 

    if (((CheckBox)this.GridView1.Rows[i].Cells[0].FindControl("chkSelect")).Checked) 

    OA_Business.Employer.Employer epy = new OA_Business.Employer.Employer(); 
    epy.E_ID = int.Parse(GridView1.DataKeys[i].Value.ToString()); 
    epy.E_Del(); 


    BindEmployer(); 
      

  4.   

       newCmd.Parameters["UserID"].Value = UserDgv.Rows[index].Cells["UserID"].Value.ToString(); 估计这个UserID不对 不是你datagridview中那个实际的列名
      

  5.   

    UserDgv.SelectedRows[0]].Cells["UserID"].Value.ToString();