Datagridview Combobox项目为空白

时间:2015-12-29 21:58:46

标签: c# vb.net winforms datagridview combobox

我试图在数据网格中使用组合框,一切正常。但是在运行时,组合框似乎不包含任何数据,这是我的代码:

Dim cbtn As New DataGridViewComboBoxColumn
    Dim ls As New DataTable
    cbtn.Name = "Schedule"
    ls.Columns.Add("Day")
    ls.Rows.Add("Monday")
    ls.Rows.Add("Tuesday")
    ls.Rows.Add("Wednesday")
    ls.Rows.Add("Thursday")
    ls.Rows.Add("Friday")
    ls.Rows.Add("Saterday")
    cbtn.DataSource = ls
    cbtn.DisplayMember = "Day"
    DoctorDataView.Columns.Add(cbtn)
    cbtn.Width = DoctorDataView.Columns(DoctorDataView.Columns.Count - 1).Width / 2

我尝试了一个列表而不是数据表,甚至直接添加项都没有结果! 有帮助吗? (C#或VB代码没问题)

1 个答案:

答案 0 :(得分:0)

没有显示DataGridView中没有值的行的数据,例如在下面的示例中,第一行具有有效值,第三行也是如此。第二行很好但没有显示值,而最后一行有无效数据所以我们需要在这里使用断言。

注意我使用DayNames提供特定于文化的工作日名称,我通常在this code example中使用自定义命名空间。

任何方式都希望这会有所帮助。

Imports System.Globalization
Public Class Form1
    ''' <summary>
    ''' One column added in the designer
    ''' Form load I add a ComboBox with weekday names for data source
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        DataGridView1.Columns.Add(
            New DataGridViewComboBoxColumn With
            {
                .DataSource = CultureInfo.CurrentCulture.DateTimeFormat.DayNames,
                .DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing,
                .Name = "DayColumn",
                .HeaderText = "Week day",
                .SortMode = DataGridViewColumnSortMode.NotSortable
            }
        )

        DataGridView1.Rows.Add(New Object() {"AAA", "Friday"})
        DataGridView1.Rows.Add(New Object() {"BBB"})
        DataGridView1.Rows.Add(New Object() {"CCC", "Monday"})
        DataGridView1.Rows.Add(New Object() {"DDD", "XYZ"})
    End Sub

    Private Sub DataGridView1_DataError(
        sender As Object,
        e As DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError

        If e.Exception.Message = "DataGridViewComboBoxCell value is not valid." Then
            Console.WriteLine("Not valid week name [{0}]", DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)
            e.Cancel = True
        End If

    End Sub
End Class