I don't think this is quite right yet, and it's not the cleanest solution, but have a go with this. It does seem to work if you double click on a cell it enters the date, and single clicking on a cell puts it just into edit mode. It's just a grid on a form.
Imports
Telerik.WinControls.UI
Imports
System.ComponentModel
Public
Class
Form1
Private
WithEvents
m_BackgroundWorker
As
New
BackgroundWorker()
Private
m_DateChangedColumn
As
GridViewTextBoxColumn
Private
Sub
Form1_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
Me
.RadGridView1.MultiSelect =
True
Me
.RadGridView1.AllowRowResize =
False
Me
.RadGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
Me
.RadGridView1.AutoGenerateColumns =
False
Me
.RadGridView1.AllowAddNewRow =
True
Dim
nameColumn
As
New
GridViewTextBoxColumn(
"Name"
)
m_DateChangedColumn =
New
GridViewTextBoxColumn(
"DateChanged"
)
m_DateChangedColumn.FormatString =
"{0:dd/MM/yyyy}"
m_DateChangedColumn.
ReadOnly
=
True
Me
.RadGridView1.Columns.Add(nameColumn)
Me
.RadGridView1.Columns.Add(m_DateChangedColumn)
Dim
rowInfo
As
GridViewRowInfo =
Me
.RadGridView1.Rows.AddNew()
rowInfo.Cells(0).Value =
"Richard"
rowInfo.Cells(1).Value =
Nothing
rowInfo =
Me
.RadGridView1.Rows.AddNew()
rowInfo.Cells(0).Value =
"Bob"
rowInfo.Cells(1).Value =
Nothing
rowInfo =
Me
.RadGridView1.Rows.AddNew()
rowInfo.Cells(0).Value =
"Ian"
rowInfo.Cells(1).Value = Now.AddDays(1)
rowInfo =
Me
.RadGridView1.Rows.AddNew()
rowInfo.Cells(0).Value =
"Fred"
rowInfo.Cells(1).Value = Now.AddDays(4)
AddHandler
m_BackgroundWorker.RunWorkerCompleted,
AddressOf
BackgroundWorker_RunworkCompleted
End
Sub
Private
Sub
BackgroundWorker_DoWork(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.ComponentModel.DoWorkEventArgs)
Handles
m_BackgroundWorker.DoWork
Threading.Thread.Sleep(300)
End
Sub
Private
Sub
BackgroundWorker_RunworkCompleted(
ByVal
sender
As
Object
,
ByVal
e
As
RunWorkerCompletedEventArgs)
If
Me
.RadGridView1.CurrentCell.ColumnInfo.Name =
"DateChanged"
Then
m_DateChangedColumn.
ReadOnly
=
False
Me
.RadGridView1.CurrentCell.RowInfo.Cells(
"DateChanged"
).BeginEdit()
End
If
End
Sub
Private
Sub
RadGridView1_CellClick(
ByVal
sender
As
System.
Object
,
ByVal
e
As
Telerik.WinControls.UI.GridViewCellEventArgs)
Handles
RadGridView1.CellClick
If
Me
.RadGridView1.CurrentCell.ColumnInfo.Name =
"DateChanged"
Then
m_BackgroundWorker.RunWorkerAsync()
End
If
End
Sub
Private
Sub
RadGridView1_CellDoubleClick(
ByVal
sender
As
System.
Object
,
ByVal
e
As
Telerik.WinControls.UI.GridViewCellEventArgs)
Handles
RadGridView1.CellDoubleClick
If
Me
.RadGridView1.CurrentCell.ColumnInfo.Name =
"DateChanged"
Then
m_DateChangedColumn.
ReadOnly
=
False
If
e.Row.Cells(
"DateChanged"
).Value
Is
Nothing
Then
e.Row.Cells(
"DateChanged"
).Value = Now.ToString()
End
If
e.Row.Cells(
"DateChanged"
).BeginEdit()
End
If
End
Sub
Private
Sub
RadGridView1_CellEndEdit(
ByVal
sender
As
System.
Object
,
ByVal
e
As
Telerik.WinControls.UI.GridViewCellEventArgs)
Handles
RadGridView1.CellEndEdit
m_DateChangedColumn.
ReadOnly
=
True
End
Sub
End
Class