2012-08-14 3 views
2

J'ai une question avec laquelle j'espère que quelqu'un pourrait m'aider. Ma question concerne winforms et datagridview dans Visual Studio 2008. Je veux lier mon datagridview à une collection d'objets métier au lieu d'un ensemble de données. Je voudrais avoir des comboboxes dans le datagridview qui obtiennent sa valeur de l'une des propriétés dans l'objet métier. Est-ce possible? Quelqu'un peut-il s'il vous plaît fournir un exemple de code ou fournir une page Web qui décrit comment faire cela. Toute aide serait appréciée.Configurer des comboboxes dans un datagridview lié à une collection

Merci, Greg

Répondre

0

est ici une simple classe de données:

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 

Créez un formulaire et placez un contrôle DataGridView sur, ajoutez ce code:

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 

Puisque vous Si vous voulez des comboboxes dans votre grille, vous devez définir AutoGenerateColumns sur false et les créer vous-même, en mappant chaque colonne à la propriété de votre classe via le DataPropertyName propriété. Pour la liste déroulante, vous pouvez définir ses propres DataSource pour la liste des éléments déroulants.

+0

Merci LarsTech. Je vais essayer ça. –

Questions connexes