DataGridView ComboBoxColumn   zodpovězená otázka

VB.NET

Dobrý den,

Pro zobrazení uživatelských dat využívám DataGridView, který obsahuje sloupec s ComboBoxem.

Jako Datasource (přímo nebo pomocí BindingSource) chci využít DataTable, kde bude jeden ze sloupců obsahovat informaci o tom, který item má být v ComboBox označen (SelectedIndex).

Rád bych se zeptal, zda je tímto způsobem možné databinding na ComboBoxColumn provést a pokud ano, můžete mne prosím navést na nějaký relevantní odkaz, kde bych našel příklad jak na to? Sám jsem nebyl schopen na Google nic nalézt, ale je to zřejmě tím, že nejsem schopen dotaz v angličtině dostatečně srozumitelně formulovat.

Předem díky za jakoukoliv radu.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zkuste nastavit ValueMember a DisplayMember:

Public Class Form1
    Public Sub New()
        ' This call is required by the Windows Form Designer.
        InitializeComponent()
        ' Add any initialization after the InitializeComponent() call.

        Dim dtb As DataTable = New DataTable
        With dtb
            .Columns.Add("B1")
            .Columns.Add("B2") 'selectedindex
            .Rows.Add("Text1", 0)
            .Rows.Add("Text2", 1)
            .Rows.Add("Text3", 2)
            .Rows.Add("Text4", 0)
        End With

        Dim dtc As DataTable = New DataTable
        With dtc
            .Columns.Add("C1") 'selectedindex
            .Columns.Add("C2") 'zobrazeny text
            .Rows.Add(0, "první")
            .Rows.Add(1, "druhý")
            .Rows.Add(2, "třetí")
        End With

        Dim dgv As DataGridView = New DataGridView
        With dgv
            .AutoGenerateColumns = False
            .Columns.Add("B1", "B1")
            .Columns(0).DataPropertyName = "B1"
            Dim ccb As DataGridViewComboBoxColumn = New DataGridViewComboBoxColumn
            With ccb
                .HeaderText = "B2"
                .Name = "B2"
                .DataPropertyName = "B2"
                .ValueMember = "C1" 'selectedindex
                .DisplayMember = "C2" 'zobrazeny text
                .DataSource = dtc 'comboboxcolumn datasource
            End With
            .Columns.Add(ccb)
            .DataSource = dtb 'datagridview datasource
            .Dock = DockStyle.Fill
        End With
        Me.Controls.Add(dgv)
    End Sub
End Class

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dobrý den,

velmi dobré řešení, díky.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback