数据库中有一张用户表
表结构如下: 
1。新建一张用户表
create table users
(
userid int not null identity(1,1),
userName varchar(20)not null,
userPwd varchar(20) not null,
memo nvarchar(500),
primary key (userid)
)2.向表中插入用户资料
insert into  users (username,userpwd)
select 'admin','123'
union
select 'adm','456'3.
我主要是想通过datagridview,对users表中的数据作新增,修改,删除操作,
首先我在界面上放置一个datagridview控件,三个button按钮,分别为,修改按钮,保存按钮,取消按钮,当我点击修改按钮之后,datagridview控件变为可编辑状态,可以对其作新增,修改,删除操作,当我点击保存按钮之后,会将我作的修改更新到数据库,我现在不知道保存按钮下面应该写点什么。
下面是我写的一些c#代码,大家帮忙看看.        SqlConnection conn = new SqlConnection("server=(local);database=myTest;user id=sa;pwd=");
        SqlDataAdapter da;
        DataSet ds = new DataSet();        public Form2()
        {
            InitializeComponent();
        }        private void Form2_Load(object sender, EventArgs e)
        {
            EnableButton(true);
            dataGridView1.DataSource = GetUsers().Tables[0].DefaultView;
            dataGridView1.AutoGenerateColumns = false;
            //SqlDataAdapter da = new SqlDataAdapter("select * from users",conn);
                    }
        private DataSet  GetUsers()
        {
            da = new SqlDataAdapter("select username,userpwd from users", conn);
            SqlCommandBuilder sqlcomb = new SqlCommandBuilder(da);
            try
            {
                
                da.Fill(ds, "Users");
                            }
            catch (SqlException ex)
            {            }
            finally
            {
                conn.Close();
            }
            return ds;        }
        private void EnableButton(bool venable)
        {
            //button1.Enabled = venable;
            cmdEdit.Enabled = venable;
            //button3.Enabled = venable;
            cmdSave.Enabled = !venable;
            cmdCancle.Enabled = !venable;
            //button3.Enabled = venable;
            dataGridView1.ReadOnly = venable;
            dataGridView1.AllowUserToAddRows = !venable;
            dataGridView1.AllowUserToDeleteRows = !venable;
        }            private void cmdSave_Click(object sender, EventArgs e)
        {
            
            //ds.Tables[0].i
            //DataColumn [] dc=new DataColumn[1];
            //dc[0] = ds.Tables["Users"].Columns[0];
            //ds.Tables["Users"].PrimaryKey = dc;
            da.Update(ds, "Users");
            ds.Tables["Users"].AcceptChanges();
            EnableButton(true);
            //da.InsertCommand.CommandText;
            
        }              private void cmdEdit_Click(object sender, EventArgs e)
        {
            EnableButton(false);
        }    }

解决方案 »

  1.   

    强烈建议LZ多设计几个按钮:新增、修改、保存、取消、删除
    坐SF先,再具体回答
      

  2.   

    先将text、lable控件绑定数据库。新增、修改时将控件变为可编辑状态,并设一个全局变量记录新增修改状态,保存时,先判断新增修改状态,若是新增状态,则向数据库插入记录;若是修改状态,则更改数据库记录。
      

  3.   


    dataGridView1.DataSource = GetUsers().Tables[0].DefaultView; 这句改成
    ds = GetUsers();
    dataGridView1.DataSource = ds.Tables[0].DefaultView;保存按钮:private void Save()
    {
        DataSet dsTmp = new DataSet();
        if(ds.Table[0].GetChange() != null)
        {
           dsTmp.Add(ds.Table[0].GetChange());
           da = new SqlDataAdapter();
           da.Update(ds);
           this.ds.Table[0].AceptChange();
        }
    }
    隐约就记得这么打了,难免有错
      

  4.   

    其实我是单纯地对datagridview进行增删改,当我点击了修改按钮之后,datagridview就变成
    了可编辑状态,不仅仅可以对其作修改操作,还可以作新增,删除操作,当一切操作完成之后,点击保存按钮,实现对数据库的更新,其实我想问题的关键在于保存按钮下的那段代码
      

  5.   

    lishock ,你好,你这种形式的增删改操作,我已经实现了,现在我的问题是在datagridview中,对其中的数据作增删改操作,这里的数据源其实是一个dataset,谢谢.
      

  6.   

    你是说对datagridview中的数据也进行增删改操作,并且有可能还是批量操作(即点一次修改后,有修改,又新增,有删除等操作,然后再保存)?
    这样应该实现不了吧,怎么去判断有没有进行这些操作,只有单个更新还有可能实现。但单个更新又怎么去识别它的操作呢?那只有用datagridview的索引了。
    不过我建议数据绑定情况下不直接对datagridview进行这些操作。
      

  7.   

    引用你上面的一段話
    "你是说对datagridview中的数据也进行增删改操作,并且有可能还是批量操作(即点一次修改后,有修改,又新增,有删除等操作,然后再保存)?"
    对,就是这样的。爲什麽我要這么去操作呢,是因為我現在正在寫一個采購模塊,一張采購單,一般情況下會有幾種產品要去采購,所以說,我把采購單拆分成頭表和字表,頭表中包括采購單號,采購人,供貨商,采購日期,等等,而子表中包含有物品編號,物品名稱,物品采購數量,物品的單價,等等
    所以我要在一個窗體里實現采購單的增刪改功能,幾乎就會用到datagridview來存放采購子表中的內容,不知道這樣講你能否理解我的意思,呵
      

  8.   

    DataSet的GetChanges方法能够获取到自上次调用AcceptChanges以来所做的修改。