2014-07-10 49 views
0

我的c#程序有一點點問題。 我有2個DataGridViews(1日有從我的本地主機數據庫加載的記錄)。當我點擊A按鈕時,從第一個DataGridView選擇的記錄進入第二個DGV並從第一個刪除。當我點擊B按鈕時,選定的記錄應該回到第1個DGV,並且應該從第2個刪除,但是VS大聲說行不能以編程方式添加到DGV。行無法以編程方式添加到DataGridView的行集合

這裏是我的代碼:

//copy rows     
    public void Kopiuj() 
    { 
     foreach (DataGridViewRow row in this.dataGridView1.SelectedRows) 
     { 
      object[] rowData = new object[row.Cells.Count]; 
      for (int i = 0; i < rowData.Length; ++i) 
      { 
       rowData[i] = row.Cells[i].Value; 
      } 

      this.dataGridView2.Rows.Add(rowData); 
     } 
    } 


//delete rows 

    public void Usun() 
    { 
     foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray()) 
     { 
      dataGridView1.Rows.Remove(selRow); 
     } 
    } 

//adding collumns cause it's neccesary 
public void DodajKolumny() 
{ 

    while (dataGridView2.Columns.Count < dataGridView1.Columns.Count) 
    { 
     foreach (DataGridViewColumn c in dataGridView1.Columns) 
     { 
      dataGridView2.Columns.Add(c.Clone() as DataGridViewColumn); 
     } 
    } 


} 

喏,這就是方法的代碼,該代碼犯規復制選定從DGV2行DGV1:

public void KopiujW() 
{ 
    foreach (DataGridViewRow row in this.dataGridView2.SelectedRows) 
    { 
     object[] rowData = new object[row.Cells.Count]; 
     for (int i = 0; i < rowData.Length; ++i) 
     { 
      rowData[i] = row.Cells[i].Value; 

      dataGridView1.Rows.Add(rowData); 
     } 

     dataGridView1.Rows.Add(rowData); 
    } 
} 

如果你們能善待告訴我在這段代碼中出了什麼問題。 Thx爲每個答案。歡呼聲

+0

從第二個網格刪除時,您可能需要的是將這些項目添加到數據源,以便第一個網格得到更新。 – terrybozzio

+1

更好的方法是從綁定到gridview的數據源集合中添加/刪除所需的行,而不是直接將行添加到gridview。當您完成操作數據源時,請使用'dataGridView1.DataBind()或dataGridView2.DataBind()'將數據綁定回去。 –

回答

0

網格綁定到DataSource,所以它不會讓您以這種方式添加數據。在'for'循環中,在代碼的第一行中使用綁定DataSource.AddNew()方法添加行。然後參考您的DataGridView的當前行。當前行將是綁定數據源控件添加的行。這樣你可以修改行中每個單元格的數據。

相關問題