我有两个窗体,一个MainForm,一个Edit在MainForm中我拖放了一个datagridview,和dataset1Edit中有一个button1我在MainForm窗体一运行就加载C:\\shangpinxml文件然后在dataGridView1_RowHeaderMouseClick的事件下弹出一个新窗体Edit点button1给dataset1添加一行新数据但是我返回的时候,dataGridView1获取了Edit中给dataset1添加的数据
-------------
问题------------
为什么同时dataGridView1也多了一行没有值的空行??为什么下面是相关代码
-----------MainForm
----------------------------
 private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {            
            Edit ed = new Edit();
            ed.mf1 = this;
            ed.ShowDialog();
        }        private void MainForm_Load(object sender, EventArgs e)
        {
            dataSet1.Clear();
            dataSet1.ReadXml(@"C:\shangpin.xml", XmlReadMode.Auto);
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = dataSet1;
            dataGridView1.DataMember = "item";
            dataGridView1.RefreshEdit();
        }------------------------
Edit----
----------------------------
  public MainForm mf1;//全局 private void button1_Click(object sender, EventArgs e)
        {
            DataRow row =mf1.dataSet1.Tables["item"].NewRow();//从新窗体为datagridview添加新行
            row[0] = "aaa";
            row[1] = "aaa";
            row[2] = "aaa";
            row.EndEdit();
            mf1.dataSet1.Tables["item"].Rows.Add(row);
            this.Close();
        }

解决方案 »

  1.   

    把dataGridView1设置成只读就好了
      

  2.   

    To :gavinhuanghsc() datagridview 的readonly=true 是只读的----------------To :wangtiecheng(不知不为过,不学就是错!) dataset 没有空行出现但是一到MainForm中,就出现多了一空行
      

  3.   

    把AllowUserToAddRows属性设为False试下
      

  4.   

    private void button1_Click(object sender, EventArgs e)
            {            DataRow row =mf1.dataSet1.Tables["item"].NewRow();//A.注意这里
                row[0] = "aaa";
                row[1] = "aaa";
                row[2] = "aaa";
                row.EndEdit();
                mf1.dataSet1.Tables["item"].Rows.Add(row);//B,注意这里.注意这里
                this.Close();
            }A,B两个地方都添加了记录,A为空记录,B就是你想要添加的.
    DataTable t=mf1.dataSet1.tables["item"]
    DataRow r=t.NewRow();
    要这样做,先把DataTable取出来在新增
      

  5.   

    To :  lxm174(眯眯这么写,还是多了一空行
      

  6.   

    private void button1_Click(object sender, EventArgs e)
            {            DataRow row =mf1.dataSet1.Tables["item"].NewRow();//A.注意这里
                row[0] = "aaa";
                row[1] = "aaa";
                row[2] = "aaa";
                row.EndEdit();
                mf1.dataSet1.Tables["item"].Rows.Add(row);//B,注意这里.注意这里
                mf1.dataSet1.AcceptChanges();//接受改变
                this.Close();
            }
      

  7.   

    问题已经解决private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
            {             dataGridView1.CancelEdit();-----------问题出在在这里--加上就可以了
                Edit ed = new Edit();
                ed.mf1 = this;
                ed.ShowDialog();
            }