2013-12-20 1 views
1

이 작은 문제를 해결하는 방법에 대해 올바른 방향으로 조향해야합니다.두 번째 양식에서 DataGridView 채우기

두 가지 형식이 있습니다. Form1에는 비어있는 dataGridView1과 btnAdd라는 버튼이 있습니다. 사용자가 단추를 클릭하면 Form2가 표시됩니다 (From2.ShowDialog()). 이 form2에는 dataGridView2와 btn2 버튼이 있습니다. Datagridview는 SQL 테이블에 바인딩됩니다 (id 및 name 열을 표시 함). 사용자가 dataGridView에서 행을 선택하고 btn2를 클릭하면 해당 행을 dataGridView1에 추가해야합니다. 어떻게하면이 일을 가장 잘 수행 할 수 있을까요? 당신의 도움을 주셔서 감사합니다.

여기에 몇 가지 코드가 있습니다.

// I show new form 
private void btnAdd_Click(object sender, EventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    From2.Text = "some title text"; 
    form2.ShowDialog(this); 
} 

// In form2 I bind data to dataGridView2 and need to add 
// selected item to dataGridView1 
public Form2() 
{ 
    InitializeComponent(); 
    getData(); 
} 

private void getData() 
{ 
    try 
    { 
    String connectionString = "my connection string"; 
    SqlConnection connection = new SqlConnection(connectionString); 
    DataTable data = new DataTable(); 
    SqlDataAdapter da = new SqlDataAdapter("my SQL query", connection); 
    da.Fill(data); 
    dataGridView2.DataSource = data; 
    } 
    catch (SqlException ex) 
    { 
    MessageBox.Show(ex.ToString()); 
    } 
} 

private void btn2_Click(object sender, EventArgs e) 
{ 
    if (dataGridView2.SelectedCells.Count > 0) 
    { 
    int i = dataGridView2.SelectedCells[0].RowIndex; 
    DataGridViewRow r = dataGridView2.Rows[i]; 
    //Need to add selected row to dataGridView1 
    } 
} 

답변

1

당신은 소유자를 사용할 수 있습니다 재산

Form2 form2 = new Form2(dataGridView1); 
     From2.Text = "some title text"; 
form2.Owner=this; 
     form2.ShowDialog(this); 

그리고 Form2를에

;

((Form1)this.Owner).YOURMETHODTOADDROW(your parameter) 

은 다음 GRID1

+0

를 새로 고침 그리드에 행을 추가 그리고 이것은 속임수를 썼는지 공공 – Ktt

+0

, 감사합니다 :)로 YOURMETHODTOADDROW을 설정 YOURMETHODTOADDROW를 구현 – user1080533

0

dataGridView1에 대한 참조를 Form2에 전달할 수 있습니다. 단, 이러한 종류의 작업으로 코드가 빠르게 얽히게 될 수 있습니다.

public class Form1 : Form 
{ 
    ... 

    private void btnAdd_Click(object sender, EventArgs e) 
    { 
     Form2 form2 = new Form2(dataGridView1); 
     From2.Text = "some title text"; 

     form2.ShowDialog(this); 
    } 
} 

public class Form2 : Form 
{ 
    private DataGridView form1DataGridView; 

    public Form2(DataGridView form1DataGridView) 
    { 
     InitializeComponent(); 

     this.form1DataGridView = form1DataGridView; 

     getData(); 
    } 

    private void btn2_Click(object sender, EventArgs e) 
    { 
     // do something with form1DataGridView 
    } 
} 
관련 문제