2

我有一个问题希望有人能帮助我。我的问题涉及 Visual Studio 2008 中的 winforms 和 datagridview。我想将我的 datagridview 绑定到业务对象集合而不是数据集。我想在 datagridview 中有组合框,它从业务对象中的属性之一获取其值。这可能吗?有人可以提供示例代码或提供描述如何执行此操作的网页。任何帮助,将不胜感激。

谢谢,格雷格

4

1 回答 1

0

这是一个简单的数据类:

Public Class MyData

  Private _ID As Integer
  Private _ItemValue As String

  Public Sub New(ByVal id As Integer, ByVal itemValue As String)
    _ID = id
    _ItemValue = itemValue
  End Sub

  ReadOnly Property ID() As Integer
    Get
      Return _ID
    End Get
  End Property

  Public Property ItemValue() As String
    Get
      Return _ItemValue
    End Get
    Set(ByVal value As String)
      _ItemValue = value
    End Set
  End Property

End Class

创建一个窗体并在其上放置一个 DataGridView 控件,添加以下代码:

Private myList As New List(Of String)
Private myItems As New List(Of MyData)

Protected Overrides Sub OnLoad(ByVal e As EventArgs)
  MyBase.OnLoad(e)

  myList.Add("First Item")
  myList.Add("Last Item")

  myItems.Add(New MyData(1, "Last Item"))
  myItems.Add(New MyData(2, "First Item"))

  DataGridView1.AutoGenerateColumns = False
  DataGridView1.Columns.Add(New DataGridViewTextBoxColumn() With _
                           {.HeaderText = "ID", _
                            .DataPropertyName = "ID"})
  DataGridView1.Columns.Add(New DataGridViewComboBoxColumn() With _
                           {.HeaderText = "ItemValue", _
                            .DataSource = myList, _
                            .DataPropertyName = "ItemValue"})

  DataGridView1.DataSource = myItems
End Sub

由于您想要在网格中使用组合框,因此您必须设置AutoGenerateColumns为 false 并自己创建它们,通过属性将每一列映射到类中的DataPropertyName属性。DataSource对于组合框,您可以为下拉项目列表设置自己的。

于 2012-08-14T21:25:22.653 回答