MonthCalendar celltype issue
Based on a previous subject :"How do I supress keystrokes in a month calendar cell" at your forum, I added some more code to implement some other keystroke for day ++, or day --. Please try the example code attached, and let me know why the second key "-" or "+" will get the error " object reference not set to an instance of an object" at DateTime dat = (DateTime)cc.Renderer.ControlValue;". Thanks.
Forum_407351.zip
Forum_407351.zip
SIGN IN To post a reply.
2 Replies
AD
Administrator
Syncfusion Team
March 16, 2006 09:45 AM UTC
Hi Hui,
The mentioned issue is caused because of a null value (cc.Renderer.ControlValue) is tried to cast as DateTime type. To get the display text here, the Control.Text must be used. Below is a code snippet.
void gridControl1_CurrentCellValidateString(object sender, GridCurrentCellValidateStringEventArgs e)
{
GridCurrentCell cc = this.gridControl1.CurrentCell;
if (cc.Renderer.StyleInfo.CellType == "MonthCalendar")
if (e.Text.IndexOf("t") > -1)
{
e.Cancel = true;
cc.CancelEdit();
cc.Renderer.Control.Text = DateTime.Now.ToString();
this.gridControl1.RefreshRange(cc.RangeInfo, true);
}
else
if(e.Text.IndexOf("+") > -1 || e.Text.IndexOf("-") > -1)
{
e.Cancel = true;
if (cc.Renderer.Control.Text.Trim() != "")
{
cc.CancelEdit();
DateTime dat = Convert.ToDateTime(cc.Renderer.Control.Text);
int diff = e.Text.IndexOf("+") > -1 ? 1 : -1;
cc.Renderer.Control.Text = dat.AddDays(diff).ToString("d");
dt.Rows[cc.RowIndex - 1][cc.ColIndex - 1] = cc.Renderer.Control.Text;
this.gridControl1.RefreshRange(cc.RangeInfo, true);
}
}
}
Regards,
Calvin.
HZ
Hui Zhong
March 16, 2006 02:53 PM UTC
Thanks, Calvin. It worked.
However, I can''t figure out why cc.Renderer.ControlValue is null though there is validate date in the cell.
>Hi Hui,
>
>The mentioned issue is caused because of a null value (cc.Renderer.ControlValue) is tried to cast as DateTime type. To get the display text here, the Control.Text must be used. Below is a code snippet.
>
>
> void gridControl1_CurrentCellValidateString(object sender, GridCurrentCellValidateStringEventArgs e)
> {
> GridCurrentCell cc = this.gridControl1.CurrentCell;
> if (cc.Renderer.StyleInfo.CellType == "MonthCalendar")
> if (e.Text.IndexOf("t") > -1)
> {
> e.Cancel = true;
> cc.CancelEdit();
> cc.Renderer.Control.Text = DateTime.Now.ToString();
> this.gridControl1.RefreshRange(cc.RangeInfo, true);
>
> }
> else
> if(e.Text.IndexOf("+") > -1 || e.Text.IndexOf("-") > -1)
> {
> e.Cancel = true;
> if (cc.Renderer.Control.Text.Trim() != "")
> {
> cc.CancelEdit();
> DateTime dat = Convert.ToDateTime(cc.Renderer.Control.Text);
> int diff = e.Text.IndexOf("+") > -1 ? 1 : -1;
> cc.Renderer.Control.Text = dat.AddDays(diff).ToString("d");
> dt.Rows[cc.RowIndex - 1][cc.ColIndex - 1] = cc.Renderer.Control.Text;
> this.gridControl1.RefreshRange(cc.RangeInfo, true);
> }
>
> }
> }
>
>Regards,
>Calvin.
SIGN IN To post a reply.
- 2 Replies
- 2 Participants
-
HZ Hui Zhong
- Mar 15, 2006 09:22 PM UTC
- Mar 16, 2006 02:53 PM UTC