我已将一个组合框添加到已绑定到数据源的datagridview . 我看到的数据是Strings,并且工作正常 . 现在我想添加另一个组合框,它可以获取日期值并显示星期几 . 时间显示为单独的列,因此用户可以选择日期然后添加时间 .

Datagridview的数据源是一个数据表,其中包含一个名为starttime的日期时间列

我认为这不起作用,因为组合框vales只是日期,数据表值是日期和时间 .

我在下面添加了一个完整的工作示例 .

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim dt1 As New DataTable

    dt1.Columns.Add("StartDate", Type.GetType("System.DateTime"))
    dt1.Columns.Add("StringData", Type.GetType("System.String"))
    dt1.Columns.Add("NumberData", Type.GetType("System.Double"))

    Dim newrow As DataRow
    newrow = dt1.NewRow
    newrow("StartDate") = Date.Parse("24/07/2015 12:00")
    newrow("StringData") = "AAA"
    newrow("NumberData") = 123
    dt1.Rows.Add(newrow)

    newrow = dt1.NewRow
    newrow("StartDate") = Date.Parse("25/07/2015 09:00")
    newrow("StringData") = "ABC"
    newrow("NumberData") = 234
    dt1.Rows.Add(newrow)

    newrow = dt1.NewRow
    newrow("StartDate") = Date.Parse("26/07/2015 10:00")
    newrow("StringData") = "DEF"
    newrow("NumberData") = 678
    dt1.Rows.Add(newrow)

    DataGridView1.DataSource = dt1

    Dim dt2 As New DataTable

    dt2.Columns.Add("DayDate", Type.GetType("System.DateTime"))
    dt2.Columns.Add("DayName", Type.GetType("System.String"))
    dt2.Columns.Add("Test", Type.GetType("System.Double"))

    Dim newrow2 As DataRow
    newrow2 = dt2.NewRow
    newrow2("DayDate") = Date.Parse("24/07/2015")
    newrow2("DayName") = Date.Parse("24/07/2015").ToString("dddd")
    newrow2("Test") = 123
    dt2.Rows.Add(newrow2)

    newrow2 = dt2.NewRow
    newrow2("DayDate") = Date.Parse("25/07/2015")
    newrow2("DayName") = Date.Parse("25/07/2015").ToString("dddd")
    newrow2("Test") = 234
    dt2.Rows.Add(newrow2)

    newrow2 = dt2.NewRow
    newrow2("DayDate") = Date.Parse("26/07/2015")
    newrow2("DayName") = Date.Parse("26/07/2015").ToString("dddd")
    newrow2("Test") = 678
    dt2.Rows.Add(newrow2)

    Dim comboBoxColumn2 As New DataGridViewComboBoxColumn()
    comboBoxColumn2.DataPropertyName = "StartDate"

    comboBoxColumn2.DisplayMember = "DayName"
    comboBoxColumn2.ValueMember = "DayDate"

    comboBoxColumn2.DataSource = dt2

    comboBoxColumn2.Name = "WorkingDay"

    DataGridView1.Columns.Insert(0, comboBoxColumn2)

End Sub

我收到一个错误:

System.ArgumentException:DataGridViewComboBoxCell值无效 .

我猜这是因为组合框中的值是24/08/2015,datagridview(DataPropertyName)的数据源中的值是24/08/2015 08:00 .

如果我更改这两个值:

comboBoxColumn2.DataPropertyName = "NumberData"

    comboBoxColumn2.DisplayMember = "Test"

该示例按预期工作,没有错误 .

如何将DataPropertyName设置为日期而不是日期和时间?