我的目的:一个DataGridView中显示了用户的基本信息,我用弹出窗口添加一条记录信息,当添加到数据库成功后,要在DataGridView中显示出刚才添加的那条记录,但不想重新读取数据,重新绑定DataGridView。只是把那条记录加到DataGridView中即可,
我的方案:在弹出窗口中加委托,DataGridView的窗口加处理:        private void AddRow(Mod_PatientsInfo mp)
        {
            DataGridViewRow dr = dgv.RowTemplate;
            dr.SetValues(new object[] { mp.xName, mp.xIdCard, mp.xSex, mp.xNation, mp.xBirthPlace,
            mp.xBirthday,mp.xAddress,mp.xTel,"",""});
            dgv.Rows.Add(dr);
            //dgv.Update();
        }运行时提示错误:
当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。
这个错误怎么解决?或者有没有其他的解决方法?

解决方案 »

  1.   

    我没有直接绑定,都是手段绑定了数据(dataset)
      

  2.   

    先把dgv.DataSource付给dt
    DataTable dt=(DataTable)dgv.DataSource;
    然后把你要加的那一行加到dt的下面去。。
    DataRow dr=dt.NewRow();
    dr["列1"]="aaa";
    .....
    dt.Rows.Add(dr);
    dtAll.AcceptChanges();
    再把dt表付给dgvdgv.DataSource=dt;
      

  3.   

    先将dgv.DataSource设置为 null
    然后改变数据源
    再将改变后的数据源赋给dgv.DataSource