我有两个窗体,一个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();
}
-------------
问题------------
为什么同时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();
}
{ 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取出来在新增
{ 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();
}
{ dataGridView1.CancelEdit();-----------问题出在在这里--加上就可以了
Edit ed = new Edit();
ed.mf1 = this;
ed.ShowDialog();
}