【问题标题】:Using 2 different databasecolumn in to single datagridview在单个数据网格视图中使用 2 个不同的数据库列
【发布时间】:2012-05-28 05:23:07
【问题描述】:

我需要在DataGridView 中显示一个名为Full Name 的列,但DataSource (datatable) 没有FullName 列。它只有 FirstNameLastName 列。我正在像这样设置我的DataGridView

Dim column As DataGridViewColumn = New DataGridViewTextBoxColumn()
column.DataPropertyName = "?" //Need FirstName + " " + LastName
column.Name = "FullName"
dgv.Columns.Add(column)

如何设置DataPropertyName 以使用数据表中FirstNameLastName 列中的数据?

谢谢。

【问题讨论】:

  • Steve 的回答非常好——因为您已经有了一个几乎可以肯定是可行的数据表。不过为了完整起见,值得注意的是,您可以在网格本身中计算列stackoverflow.com/questions/6097370/…

标签: .net vb.net winforms datagridview


【解决方案1】:

我不认为DataPropertyName 是这样工作的。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumn.datapropertyname.aspx

改为在数据库方面执行此操作。在您的选择中(此处为 SQL Server 语法),执行 FirstName + " " + LastName as FullName,您将得到一个 FullName 列而不是两列。

如果您无权访问 SQL 端,则可以操作 DataTable 并在代码中创建自己的 FullName 列。我想一些 LINQ 和/或循环应该可以解决问题。

【讨论】:

    【解决方案2】:

    使用另一种方法。将计算列添加到您的数据表中。

    Dim dc as DataColumn = dt.Columns.Add("FullName", System.Type.GetType("System.String"))
    dc.Expression = "FirstName + ' ' + LastName"
    

    其中 dt 是您设置为 DataGridView 的数据源的数据表。

    计算列中使用的表达式语法规则可以在这个link on MSDN找到。
    同样的规则也适用于另一个非常有用的方法:DataTable.Select(filterExpression) 方法

    【讨论】:

    • 不知道你能做到这一点。很整洁。
    • @Yatrix 这只是可用语法的一小部分。 See here
    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2016-09-28
    • 2011-02-19
    • 2017-01-15
    相关资源
    最近更新 更多