【问题标题】:How are DataGridView columns named when populated by a Typed DataSet?由 Typed DataSet 填充时,DataGridView 列如何命名?
【发布时间】:2014-12-11 22:52:58
【问题描述】:

当通过类型化的 DataSet 填充 DataGridView 时,它如何/自然地命名列?

例如:

Dim sqlstrg as String = "SELECT [Welding_CWB].[CWB_Process] AS 'Process', [Welding_CWB].[CWB_Classification] AS 'Class', [Welding_CWB].[CWB_Position] AS 'Position', [Welding_CWB].[CWB_Standard] AS 'Standard', [Welding_CWB].[CWB_Thickness_Range] AS 'Thickness', [Welding_CWB].[CWB_Expiry] AS 'Expiry' FROM [Welding_CWB];"
Dim cs as String = My.Settings.ConnectionString
Dim con as new SqlConnection(cs)
Dim ds as new DataSet
Dim da as new DqlDataAdapter(sqlstrg, con)

con.open()
da.fill(ds, "TableName")
con.close()

Datagridview1.Datasource = ds.Tables(0)

我指的是:

For I As Integer To Me.datagridview1.rows.count - 1

Me.Datagridview1.Rows(I).cells(Name of column).value 
                                     ^
Next                                 |
                                     |

列的名称是什么?有没有一种方法可以指定该名称是什么?

【问题讨论】:

  • 您究竟是什么意思“它如何/自然地命名列?”
  • Ambitiouz,我在原始问题中添加了更多内容,因此格式更易于理解。

标签: .net vb.net datagridview


【解决方案1】:

除非ColumnName 属性另有定义,否则列的名称将与源DataTable 相同。

' Wrap the source DataTable in a DataView.
Datagridview1.Datasource = New DataView(ds.Tables(0))

For I As Integer To Me.datagridview1.rows.count - 1
    Me.Datagridview1.Rows(I).cells("NameFromSourceSQL").value
Next

在你的情况下,有效的名字是:

  • 流程
  • 位置
  • 标准
  • 厚度
  • 到期

您可以通过执行以下操作来迭代列名称:

For Each col As DataGridViewColumn In DataGridView1.Columns
    MessageBox.Show("Column Name = " & col.ColumnName & " / Header = " & col.HeaderText)
Next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多