我有一个DataGridView和一个DataTable,我想执行两步操作。第一步是将选定的行从DataGridView复制到DataTable进行进一步处理,第二步是从DataGridView中删除该行。
注意:我想一个接一个地删除多行,因此每次我将一行复制到DataTable中时,它都会进入下一个Datable行索引。
这是我用来从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;
}
}
}
答案 0 :(得分:0)
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;
}
}
}
}