我能够创建数据表并将其绑定到datagridview。如果可能,我想要更复杂的东西。我想将第一列限制为值1到12,将第二列限制为AM或PM。
提前致谢。
mDataTable = GetTable()
DataGridView1.DataSource = mDataTable
Function GetTable() As DataTable
' Create new DataTable instance.
Dim table As New DataTable
' Create four typed columns in the DataTable.
table.Columns.Add("Hour", GetType(Integer))
table.Columns.Add("AM/PM", GetType(String))
table.Columns.Add("Delete", GetType(Boolean))
For i = 1 To mSchedules.Count
table.Rows.Add(SetAMPMHour(mSchedules(i - 1).ScheduleINetHour), SetAMPM(mSchedules(i - 1).ScheduleINetHour), False)
Next
Return table
End Function
答案 0 :(得分:0)
如果combobox column
具有固定值,您可以在设计时或运行时手动定义这些值(尽管两种方式都要求您将AutoGenerateColumns
属性设置为False
在将数据绑定到网格之前)。
如果您想通过代码执行此操作,请尝试以下操作:
DataGridView1.AutoGenerateColumns = False
Dim hoursCol, timeOfDayCol As New DataGridViewComboBoxColumn
Dim deleteCol As New DataGridViewCheckBoxColumn
For i As Integer = 1 To 12
hoursCol.Items.Add(i)
Next
timeOfDayCol.Items.Add("AM")
timeOfDayCol.Items.Add("PM")
hoursCol.DataPropertyName = "Hour"
timeOfDayCol.DataPropertyName = "AM/PM"
deleteCol.DataPropertyName = "Delete"
DataGridView1.Columns.Add(hoursCol)
DataGridView1.Columns.Add(timeOfDayCol)
DataGridView1.Columns.Add(deleteCol)
mDataTable = GetTable()
DataGridView1.DataSource = mDataTable
如果您想在设计时间内完成:
创建您的Combobox Column
...
...将DataPropertyName
设置为将绑定到该GridView列的DataTable列的名称,并在Collection
中定义将填充ComboBox
的值
请记住,即使您在设计时定义了值,也必须在设置数据源之前以编程方式将AutoGenerateColumns
设置为False
。此外,如果您在设计时创建ComboBox列,则必须使用String
值填充它。