我有一个包含2个datagridviews的表单,我想知道如何从“datagridview1”正确导入所选行到第二个datagridview“DatagridCopy”?
我想从选定的行创建一个新的DataTable,并使DataTable成为DatagridCopy的数据源 .
我一直收到这个错误:
附加信息:值类型与列类型不匹配无法在t101PARTDataGridViewTextBoxColumn列中存储<8S3501> . 预期的类型是DataGridViewTextBoxCell .
DataTable dt = new DataTable();
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
dt.Columns.Add(column.Name, column.CellType); //better to have cell type TextBoxCell.
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
dt.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
dt.Rows[i][j] = dataGridView1.SelectedRows[i].Cells[j].Value; //ERROR HERE<-----
}
}
}
BindingSource binding = new BindingSource();
binding.DataSource = dt;
DatagridCopy.DataSource = binding;
1 回答
DataTable应该保存数据,没有任何可视信息,但是
你告诉它数据将DataGridViewTextBoxCell,但然后在这里
您指定实际值而不是单元格 . 试试dt.Columns.Add(column.Name)或dt.Columns.Add(column.Name,typeof(string))或它实际上的任何类型 .
如果您希望您的单元格是特定类型,则需要设置DatagridCopy,而不是dt .