2016-07-31 12 views
0

Ich versuche, Excel-Datei zu importieren und laden Sie es in meine datagridview1.Excel-Datei importieren und DataGrid anzeigen Ausgewählte Zeilen zu einem anderen DataGridView anzeigen

Nach dem Anzeigen des Inhalts der Datei in meinem DataGridView, möchte ich die Zeile auswählen und in meine zweite DataGridView übertragen.

Bitte kann mir jeder helfen, meinen Code zu reparieren? Weil ich Fehler bekommen:

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

Bitte Code einrücken. –

Antwort

0

Sie könnten etwas mehr versuchen, wie dieser

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# typischerweise keine Modifikation einer Sammlung ermöglichen, während die Sammlung aufgezählt wird. Sie können dieses Problem normalerweise umgehen, indem Sie die anfängliche Schleife verwenden, um einfach die Objekte zu sammeln, die Sie bearbeiten möchten, und dann können Sie durch diese Auflistung von Objekten iterieren. So etwas wie

Ich würde mir auch vorstellen, dass Aufruf dataGridView1.SelectedRows sollte ausreichen. Es ist nicht notwendig, in ein stark typisiertes Array zu konvertieren, aber das ist vielleicht eher eine syntaktische Vorliebe als alles andere.

Versuchen Sie dies und lassen Sie mich wissen, wie es funktioniert

+0

Vielen Dank für die Antwort, aber die Daten, die von datagridview1 und Variablen noch nicht in der datagridview2 angezeigt, wenn ich auf die Schaltfläche zum Verschieben (button3_click) klicken. Ich habe nur eine Datei öffnen Schaltfläche für Excel-Datei, eine Schaltfläche zum Laden Excel-Datei Inhalt in Datagridview1 und eine Schaltfläche, um die ausgewählte Zeile von Datagridview1 zu Datagridview2 zu verschieben. –