数据绑定Datagridview Combobox显示从datetime开始的星期几

时间:2015-09-03 09:21:34

标签: vb.net datetime datagridview combobox

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

0 个答案:

没有答案