2016-07-31 1 views
0

Excel 파일을 가져 와서 내 datagridview1에로드하려고합니다.Excel 파일을 가져오고 선택한 DataGridView 행을 다른 DataGridView에 표시하십시오.

파일 내용을 내 DataGridView 안에 표시 한 후 행을 선택하고 내 두 번째 파일로 전송하려고합니다. DataGridView.

누구든지 내 코드를 수정하는 방법을 알려주십시오. 내가 오류를 받고 있어요 때문에 :

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll

private void button1_Click(object sender, EventArgs e) 
{ 
    string PathConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +textBox1.Text + ";Extended Properties='Excel 12.0 XML;HDR=YES;';"; 
OleDbConnection conn = new OleDbConnection(PathConn); 
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + "Sheet1" + "$]", conn); 
    DataTable dt = new DataTable(); 
    myDataAdapter.Fill(dt); 
    dataGridView1.DataSource = dt; 
} 
private void button2_Click(object sender, EventArgs e) 
{ 
    OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
    if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    { 
    this.textBox1.Text = openFileDialog1.FileName; 
    } 
} 
private void button3_Click(object sender, EventArgs e) 
{ 
    foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray()) 
    { 
    dataGridView2.Rows.Remove(selRow); 
    dataGridView2.Rows.Add(selRow); 
    } 
} 
+0

코드를 들여 씁니다. –

답변

0

당신은 그 컬렉션을 열거하는 동안 일반적으로 컬렉션의 수정을 허용하지 않는 이상이

var selected_rows = new List<DataGridViewRow>(); 
foreach (DataGridViewRow selRow in dataGridView1.SelectedRows.OfType<DataGridViewRow>().ToArray()) 
{ 
     selected_rows.Add(row); 
} 
foreach(var row in selected_rows){ 
     dataGridView1.Rows.Remove(row); 
     dataGridView2.Rows.Add(row); 
} 

C 번호 같은 것을 시도 할 수 있습니다. 초기 루프를 사용하여 작업하려는 개체를 간단하게 수집하여이 문제를 우회 할 수 있습니다. 그런 다음 해당 개체 컬렉션을 반복 할 수 있습니다. 이 같은 것

나는 또한 dataGridView1.SelectedRows을 부르는 것이 좋을 것이라고 생각한다. 강력하게 형식화 된 배열로 변환 할 필요는 없지만 그 무엇보다 구문 적으로 더 선호 할 수 있습니다.

이것을 시험해보고 작동 방식을 알려주세요.

+0

대단히 고맙습니다. 그러나 datagridview1에서 가져온 데이터와 변수는 여전히 이동 버튼 (button3_click)을 클릭하면 datagridview2에서 볼 수 없습니다. 방금 파일 하나를 열면 파일 버튼 하나를 표시하는로드 버튼이 파일 내용을 datagridview1로, 한 단추를 사용하여 선택한 행을 datagridview1에서 datagridview2로 이동하십시오. –

관련 문제