本帖最后由 bulls5988 于 2011-11-09 20:27:56 编辑

解决方案 »

  1.   

    你这个设计有问题啊,逻辑也有问题,我都不晓得你的代码,都是怎样的?传一个datagridview进去,又传一个出来!?删除东西,也不知道为什么要传一个datagridview进去,还要返回一个出来!?你说你要删除,我都没有看到你哪里删除了,里面用了sqlcomman一类的东西,又没有看到删除的语句,没有删除,竟然里面却还有update一类的东西!?
    不知道谁能看懂
      

  2.   


    ... 估计是你没看懂吧,为什么没人能看懂?第一个userlist_load方法是填充 datashow.cs 中的控件m_userlist users = new m_userlist();
    users.userlist_load(d_userlist);这时候回返回控件名,然后第二个方法对这个控件做datagridview里面的选中行移除,然后直接更新dgv中的内容到userlist_load所读取的表中。而且现在是可以删除数据的,不过是删除的数据并不是我选中的那一行而已。
      

  3.   

     public DataGridView userlist_load(DataGridView u_data)
            {            //读取用户列表
                
                  m_sql_conn fee_conn = new m_sql_conn();
                SqlConnection conn = new SqlConnection(fee_conn.sql_conn());
                SqlCommand cmd = new SqlCommand(userload,conn);
                find_do = new SqlDataAdapter();
                find_do.SelectCommand = cmd;
                ds = new DataSet();
                try
                { 
                    u_data.RowHeadersVisible = false;
                    find_do.Fill(ds, "rs");
                }
                catch(System.Exception)
                {
                    MessageBox.Show("数据库连接失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return null;
                }
                
                u_data.DataSource = ds.Tables["rs"]; 
                return u_data;
            }        public DataGridView user_del(DataGridView del_udata)
            {
                
                //删除所选用户信息            DialogResult uprs = MessageBox.Show("您真的要删除此用户吗?", "删除提示");
                switch (uprs)
                {
                    case DialogResult.Yes:
                         SqlCommandBuilder delete = new SqlCommandBuilder(find_do);
                        try
                        {
                            find_do.DeleteCommand = delete.GetDeleteCommand();
                            del_udata.Rows.Remove(del_udata.CurrentRow);
                            find_do.Update(ds, "rs");
                        }
                        catch (System.Exception)
                        {
                            MessageBox.Show("所选用户不能为空", "提示");
                            return del_udata;
                        }
                        del_udata.Update();
                        MessageBox.Show("用户已删除", "提示");
                        break;
                    case DialogResult.No:
                        break;
                }
                return del_udata;
            }
    调用类窗体,datashow.cs
    C# code
    private void m_usermange_Load(object sender, EventArgs e)
            {
    //填充GDV控件
                 m_userlist users = new m_userlist();
                users.userlist_load(d_userlist);
    }
    private void b_del_Click(object sender, EventArgs e)
            {
    //使用返回控件名,删除数据。
                m_userlist users = new m_userlist();
                users.user_del(users.userlist_load(d_userlist));    
            }
      

  4.   

    代码就不说了,问题应该在CurrentRow,没有把你操作的行设置为Currentrow。