Как скопировать выбранную строку из DataGridView в DataTable в C # - PullRequest
0 голосов
/ 22 октября 2018

У меня есть DataGridView и DataTable, и я хочу выполнить двухэтапную операцию. 1-й - скопировать выбранную строку из DataGridView в DataTable для дальнейшей обработки, 2-й шаг - удалить эту строку из DataGridView.

Примечание: Я хочу удалить несколько строк одну за другой, поэтому каждый раз, когда я копирую строку в DataTable, она попадает в следующий индекс Datable Row.

Вот код, который я использую для удаления выбранной строки из DataTable. Я хочу знать, чтокод для копирования выбранной строки в DataTable.

 private void btnDelete_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            try
            {

                dataGridView1.Rows.RemoveAt(row.Index);
            }
            catch (Exception)
            {
                throw;
            }
        }
    }

1 Ответ

0 голосов
/ 22 октября 2018
DataRow row = ((DataRowView)row.DataBoundItem).Row

Используя приведенную выше строку кода, вы можете прочитать строку таблицы данных для каждого выбранного элемента.

для копирования

var datarow = ((DataRowView)row.DataBoundItem).Row;
newTable.Rows.Add(datarow.ItemArray);

полный пример кода

public partial class Form1 : Form
{
    private DataTable table = new DataTable();
    private DataTable newTable;
    public Form1()
    {
        InitializeComponent();
        table.Columns.AddRange(new DataColumn[] {
            new DataColumn("id",typeof(int)),
            new DataColumn("Desc",typeof(string))
        });
        newTable = table.Copy();
        dataGridView1.DataSource = table;
        dataGridView2.DataSource = newTable;
        table.Rows.Add(1, "One");
        table.Rows.Add(2, "Two");
        table.Rows.Add(3, "Three");
        table.Rows.Add(4, "Four");
        table.Rows.Add(5, "Five");
    }

    private void btnDelete_Click(object sender, EventArgs e)
    {
        foreach (DataGridViewRow row in dataGridView1.SelectedRows)
        {
            try
            {
                var datarow = ((DataRowView)row.DataBoundItem).Row;
                newTable.Rows.Add(datarow.ItemArray);
                dataGridView1.Rows.RemoveAt(row.Index);
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}
...