【问题标题】:DataGridView MovingDataGridView 移动
【发布时间】:2011-08-25 08:16:47
【问题描述】:

我正在尝试通过单击按钮将选定的行从一个 DGV 移动到另一个 DGV。

我真的不知道从哪里开始..

我有两个单独的 DGV,它们由一个数据源绑定..

choiceDGV.DataSource = theChoiceList;
universalDGV.DataSource = theUniversalList;

我想通过单击按钮将choiceDGV 中的任何选定项目移动到univeralDGV。我需要确保从一个 DGV 中删除选定的行并添加到第二个 DGV。

DataGridView 的列数相同。

【问题讨论】:

标签: c# datagridview datasource row


【解决方案1】:

你试过了吗:

foreach (DataGridViewRow row in choiceDGV.SelectedRows)
{
     universalDGV.Rows.Add(row);
     choiceDGV.Rows.Delete(row);
}

或(已编辑:不幸的是 DataGridViewRow 没有 ItemArray):

foreach (DataGridViewRow row in choiceDGV.SelectedRows)
{
     object[] items = new object [row.Cells.Count];
     for (int i = 0; i < row.Cells.Count; i++)
         items[i] = row.Cells[i].Value;
     universalDGV.Rows.Add(items);
     choiceDGV.Rows.Delete(row);
}

【讨论】:

  • 我已经尝试过这样做,逻辑似乎可以工作..它只是没有移动任何东西。我想知道为什么它不......嗯
  • 我发现我需要在单击单个单元格时选择整行。我用这个link 来做到这一点。所以现在我得到的错误是:Rows cannot be programmatically added to the DataGridView's rows colletion when the control is data-bound.
  • 我在其他答案中查看了您的评论,发现您的数据源中的数据类型是什么,所以我会尝试这样做:theUniversalList.Add(new LoadLine(items[0], items [1], .../* 或您的 LoadLine 构造函数接受的任何形式*/));而不是universalDGV.Rows.Add(items);然后是UniversalList.EndEdit()(不确定是否真的需要)并重新绑定DGV。希望有帮助
  • 好吧,这是有道理的。但是我如何从其他 DGV 获得items[0], items[1], ...
  • 就像我在原始答案中所做的那样:for (int i = 0; i
【解决方案2】:

我看不到问题。您只需将您喜欢的项目移动到 onclick 按钮处理程序中的 UniversalList 并在两个 datagridview 上调用 .DataBind()。 换句话说,您必须点击列表(数据源)而不是数据网格视图

【讨论】:

  • 服务器端。您的绑定逻辑以及您如何填充列表
  • theChoiceList.Add(new LoadLine(theChipList[count].Name, theDataBaseList[i].PlacingTime, ...a total of 14));
  • 那么我会做一些类似的事情:foreach(var row i nchoiceDGV) { theUniversalList.Add(row); theChoiceList.Remove(row); } 吗? (顺便说一句,这不起作用)
猜你喜欢
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多