/ / Datagridview के लिए चयनित निर्यात करता है एक datatable करने के लिए काम नहीं करेगा - c #, datagridview, datatable

निर्यात datagridview selectedrows एक datatable काम नहीं होगा-c#, datagridview, datatable

मैं डेटाग्रिडव्यू से डेटाटैब तक सभी चयनित निर्यात करना चाहता हूं। 2 से अधिक पंक्तियों पर क्लिक करने (चयन करने) के बाद अगली त्रुटि दिखाई देती है:

"System.DndexOutOfRangeException प्रकार की अपवाद त्रुटि System.Data.dll में हुई।"

सबसे पहले, मैंने कोशिश की:

DataTable table = new DataTable();
for (int i = 0; i < dataGridView_auswahlen.Rows.Count; i++) {
if (dataGridView_auswahlen.Rows[i].Selected) {
table.Rows.Add( );
for (int j = 0; j < dataGridView_auswahlen.Columns.Count; j++) {
table.Rows[i][j] = dataGridView_auswahlen[j, i].Value;
}
}
}

उसके बाद, मैंने इसे संशोधित किया:

DataTable dt = new DataTable(); // create a table for storing selected rows
var dtTemp = dataGridView1.DataSource as DataTable; // get the source table object
dt = dtTemp.Clone();  // clone the schema of the source table to new table
DataTable table = new DataTable();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Selected)
{
var row =   dt.NewRow();  // create a new row with the schema
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
row[j] = dataGridView1[j, i].Value;
}
dt.Rows.Add(row);  // add rows to the new table
}
}

अब समस्या यह है कि, मेरा डेटाग्रिडव्यू केवल 1 परिणाम प्रदर्शित कर रहा है। मुझे अपने डेटाग्रिडव्यू में पूर्ण परिणाम सूची प्रदर्शित करने की आवश्यकता है और केवल चयनितरो को एक डेटाटेबल में सहेजा जाना है।

उत्तर:

उत्तर № 1 के लिए 1

इस सरल कोड का उपयोग करें:

var dtSource = dataGridView1.DataSource as DataTable;
var dt = dtSource.Clone();

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
dt.ImportRow(dtSource.Rows[row.Index]);
}