如何为自动生成的列设置自定义DataGridViewColumn?

时间:2014-04-23 05:21:55

标签: vb.net winforms datagridview

我已经下载了一些相对于在我的网站上建立专栏的代码 DataGridView允许我使用DateTimePicker

到目前为止一切顺利。如果我使用Dim col as new CalendarColumn添加列,则网格效果很好。

但是......我需要分配一个现有的列...... 来自数据库。如何让我datagridview1.columns("NoteDate") CalendarColumn

我也尝试了以下代码

Dim col As New CalendarColumn()
col.DataPropertyName = "NoteDate"
col.HeaderText = "Headertext"
Dim loc As Integer =
dataGridView1.Columns.IndexOf(dataGridView1.Columns("NoteDate"))
dataGridView1.Columns.RemoveAt(loc)
dataGridView1.Columns.Insert(loc, col)

我认为它解决了我的问题,但只有当我重新刷新我的数据网格时才会工作一次,NoteDate会填充数据库中的值,但我不能让日历列再次运行

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

当您说"数据库中的现有列"时,我想您的意思是将AutoGenerateColumns DataGridView属性设置为True。在这种情况下,您可以使用ColumnAdded事件并为列定义CellTemplate

上面的示例假设您的自定义DataGridViewTextBoxCell类名为" CalendarCell"。

Private Sub dataGridView1_ColumnAdded(sender As Object, e As DataGridViewColumnEventArgs) Handles dataGridView1.ColumnAdded
    If e.Column.DataPropertyName = "NoteDate" Then ' for your specific column
        e.Column.CellTemplate = New CalendarCell()
    End If
End Sub