我已将一个组合框添加到已绑定到数据源的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设置为Date而不是Date&时间?