【问题标题】:Display column subset of DataTable in DataGridView在 DataGridView 中显示 DataTable 的列子集
【发布时间】:2016-03-23 02:47:57
【问题描述】:

我正在创建一个DataTable 来存储我的项目的信息,稍后会将信息推送到 MS Excel 文件中。我想通过DataGridView 控件向用户显示我的WinForms 项目中的一些这些数据,但我不想向用户显示整个DataTable - 只是必不可少的列。我发现这是一个挑战,因为 DataTable 设置为使用行多于列。

我试图从一个 DataTable 复制到另一个,使用一个用于存储和一个子集用于显示,但由于列共享引用,我不能有多个同名的列,或者我更改了一个 DataTable 中的列,随后两者都发生了变化。我也尝试过使用DataView 创建一个子表,但遇到了同样的问题。

有没有一种干净的方法来解决这个问题? (否则我会粗略地尝试设置我的列大小,以便在 DataGridView 中看不到不必要的数据。)

【问题讨论】:

  • 不能设置AutoGenerateColumns=False,然后指定数据绑定列吗?
  • @clb9355,我们希望您的问题已得到解决。我可以建议您进一步阅读meta.stackexchange.com/questions/5234/…...问候...
  • @Monty 不用担心,我知道接受答案的工作原理 :) 在过去的几天里,这项任务在我的优先级列表中较低,我无法 100% 让事情正常进行然而 - 建议的解决方案绝对是我调查的正确途径,但不能完全解决问题(我相信我需要将数据绑定到列,仅此而已)。我只是想在接受答案之前确定一下。

标签: c# datagridview datatable


【解决方案1】:

您需要在设计器视图中添加(要显示的)列。并将属性 AutoGenerateColumns 设置为 false

【讨论】:

    【解决方案2】:

    试试这个

    隐藏列...

    this.DataGridView.Columns[0].Visible = false;
    

    或者您可以将数据从一个数据表过滤到另一个数据表中...

    string[] colnames = new string[] { "col1", "col2" };
    dt2 = dt1.DefaultView.ToTable(false, colnames);
    

    我没有测试过任何代码....

    您可以只填充另一个数据表,仅从您的数据源中选择您想要的列......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多