【问题标题】:Export selection from DataGrid to .csv [duplicate]将选择从 DataGrid 导出到 .csv [重复]
【发布时间】:2017-10-17 06:50:17
【问题描述】:

更具体的问题:Export DataBase (.mdb / .accdb) to .csv

我是数据网格的新手,需要导出标记(选中)的特定行。

我找不到仅导出选定字段的简单方法。

现在没有选择的代码:

StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = DataSet_DB.Tables[0].Columns.Cast<DataColumn>().
        
sb.AppendLine(string.Join(";", columnNames));

foreach (DataRow row in DataSet_DB.Tables[0].Columns)
{
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
    sb.AppendLine(string.Join(";", fields));
}

File.WriteAllText(SFD.FileName, sb.ToString());

【问题讨论】:

  • 您应该使用 DataGridView.SelectedRows 属性。但是请查看MSDN page 中有关使此属性填充网格的选定行所需的设置

标签: c# wpf csv datagrid


【解决方案1】:

您可以使用 DataGridView.SelectedRows 集合获取选定的行。如果您的 DataGridView 只允许选择一个,请查看我的示例。

DataGridView.SelectedRows 获取被选中的行的集合 用户。

样本

if (dataGridView1.SelectedRows.Count != 0)
{
    DataGridViewRow row = this.dataGridView1.SelectedRows[0];
    row.Cells["ColumnName"].Value
}

更多信息:

export specific columns

【讨论】:

  • 在 wpf 中,DataGrid 没有任何 SelectedRows 函数。是DataGrid和DataGridView的区别
【解决方案2】:

在将所需的属性 SelectionMode 设置为 FullRowSelect 后,您应该循环遍历 DataGrid1.SelectedRows 属性。然后每个网格行都有一个名为 DataBoundItem 的属性,该属性引用用于填充该行的对象。
在您的情况下,该对象似乎是一个 DataTable,因此您可以返回 DataRow,首先将 DataBoundItem 转换为 DataRowView,然后从那里获取 DataRow。

foreach (DataGridViewRow gridrow in dataGrid1.SelectedRows)
{
    DataRow row = ((gridrow.DataBoundItem) as DataRowView).Row
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
    sb.AppendLine(string.Join(";", fields));
}

【讨论】:

  • 我使用的是 DataGrid 而没有 DataGridView,这是我的问题:/但谢谢回答
  • 好吧,我真的建议您尽快更改该控件。当然,如果时间和预算允许你这样做。但它在过时的技术中已经过时了
猜你喜欢
  • 2013-08-28
  • 2016-09-30
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多