我有2个数据网格视图和一个数据表。我想要一个按钮,当点击它时,它会将csv_datagridview中的行添加到optimal_datagridview。但是,无论何时我取消选择csv_datagridview中的条目并再次点击该按钮,它都会清除该选择。我想每次都有选择棒。
if (selectedRowCount <= 9)
{
List<object> destList = new List<object>();
foreach (DataGridViewRow row in csv_datagridview.SelectedRows)
destList.Add(row.DataBoundItem);
optimaldataGridView.DataSource = destList;
提前非常感谢你:)
答案 0 :(得分:1)
目前还不清楚您所显示的小代码究竟是什么问题,但是当您在csv_datagridview
中取消选择某个条目并再次点击该按钮时,会从您的语句中清除该选项。我猜测如果没有选择任何内容,当您按下添加选定按钮时,optimaldataGridView
中的数据会清除。
我将假设csv_datagridview
绑定到一个表。您发布的代码显示了新列表destList
的创建,您可以使用csv_datagridview
中的选定行填充该列表。然后,将optimaldataGridView
数据源设置为destList
。我在此图片中看到的一个问题是,只要您离开if (selectedRowCount <= 9)
条款,destList
将不再存在。作为表单上DataGridView的数据源,我认为只要表单处于打开状态,您就希望将此List保持为全局。无论哪种方式......您没有添加所选行,只需删除现有行,然后添加csv_datagridview
中选择的内容即可。
我希望下面的代码会有所帮助。我创建了两个DataTable,每个DataGridView一个。 csv_datagridview
数据表填充了一些数据,第二个数据表留空。然后,只需将csv_datagridview
中选定的行添加到optimaldataGridView
的DataTable ...然后刷新optimaldataGridView
。
DataTable table1;
DataTable table2;
public Form1() {
InitializeComponent();
csv_datagridview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
optimaldataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
table1 = GetTable("table1");
table2 = GetTable("table2");
FillTable(table1);
csv_datagridview.DataSource = table1;
optimaldataGridView.DataSource = table2;
}
private void button1_Click(object sender, EventArgs e) {
if (csv_datagridview.SelectedRows.Count > 0) {
foreach (DataGridViewRow row in csv_datagridview.SelectedRows) {
DataRowView dr = (DataRowView)row.DataBoundItem;
table2.Rows.Add(dr.Row.ItemArray[0], dr.Row.ItemArray[1], dr.Row.ItemArray[2]);
}
optimaldataGridView.Refresh();
}
}
private DataTable GetTable(string name) {
DataTable table = new DataTable(name);
table.Columns.Add("col1");
table.Columns.Add("col2");
table.Columns.Add("col3");
return table;
}
private void FillTable(DataTable table) {
for (int i = 0; i < 10; i++) {
table.Rows.Add("R" + i + "C0", "R" + i + "C1", "R" + i + "C2");
}
}
希望这有帮助。
答案 1 :(得分:0)
您的代码正在我身边。
仍然会选中所选行。
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.ReadXml(Application.StartupPath + @"\test.xml");
csv_datagridview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
csv_datagridview.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
List<object> destList = new List<object>();
foreach (DataGridViewRow row in csv_datagridview.SelectedRows)
destList.Add(row.DataBoundItem);
optimaldataGridView.DataSource = destList;
}
确保没有可能影响选择的网格附加事件。