【问题标题】:how to move multiple rows from one Grid View to another | WPF如何将多行从一个网格视图移动到另一个 | WPF
【发布时间】:2018-06-11 12:21:50
【问题描述】:

我有一个GridView,用户可以在其中选择他想要复制的行(将其移动到另一个网格视图)。到目前为止,用户必须一一选择每一行。我想通过让用户一次选择多行并复制多行来改进用户体验。
有什么方法可以让我轻松做到这一点?

图像显示了我想要做什么,将选定的行移动到右侧网格视图
我正在使用 C# WPF,数据存储在链接到网格视图的 Datatable 中
我用来移动一行的代码:

DataRowView viewRow = (DataRowView)DBElementGrid.SelectedItem;
DataRow row = selectTable.NewRow();                                                                                                 

for (int i = 0; i < DBElementGrid.Columns.Count; i++)                                                                              
{
     row[i] = viewRow[i];                                                                                                            
}

selectTable.Rows.Add(row);        
for (int i = 0; i < DBElementGrid.Columns.Count; i++)                                                                                                   
{
     selectTable.Columns[i].ColumnName = DBElementGrid.Columns[i].Header.ToString();                                                 
}
selectGrid.DataContext = selectTable.DefaultView;    

【问题讨论】:

  • 使用在循环中为每个选定行复制一行的代码?
  • 你在使用 MVVM 吗?显示一些代码和您尝试过的内容。
  • @blins 我不是在构建 Web 应用程序,它是一个独立的 c# 程序
  • 右边DataGrid的ItemsSource是什么?
  • @mm8 一个数据表

标签: c# wpf


【解决方案1】:

如果右 DataGrid (targetDataGrid) 绑定到包含与您从中选择的原始列数相同的列数的 DataView,这应该可以工作:

DataView dv = targetDataGrid.ItemsSource as DataView;
if (dv != null)
{
    foreach (var selectedItem in selectGrid.SelectedItems.OfType<DataRowView>())
    {
        dv.Table.Rows.Add(selectedItem.Row.ItemArray);
    }
}

【讨论】:

    【解决方案2】:

    如果您使用 DataGrid,您可以直接访问 dataGrid 的选定项。因此 DataGrid.SelectedItems 将为您提供选定的项目,您可以将其设置为正确 DataGrid 的项目源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多