I have datetimeeditors configured to display time only for a start and end time. I have code behind the form which compares start to end and if end is earlier (i.e. user enters 10:00 PM start and 2:00 AM finish) then it adds one day to the end time (so 06-14-12 2:00 AM becomes 06-15-12 2:00 AM)..
There is a drop down calendar enabled on the editor. However, if the user opens the drop down calendar and selects a different date (i.e. they meant to enter 10:00 AM and 2:00 PM so they need to reverse the action of the code behind the form) the date in the control's value does NOT change.
How can I allow the user to alter the underlying date using the calendar while only displaying and allowing direct editing of the masked time portion?
Hello ellswrth,
If I understand well your scenario, the mentioned behavior is expected (it is by design) when you are using MaksInput and FormatString to display only the TIME. If you want to achieve desired behavior maybe you could handle ultraDateTimeEditor1_BeforeDropDown() event and using MonthCalandar. Please take a look at the attached sample and video file for more details and let me know if you have any questions.
Regards
I think I have a bit of a hitch.
What I didn't share in my original post is that the DateTimeEditor is actually used as an EditorComponent attached to a DateTime column in an UltraGrid.
I'm working in VB but have translated the sample you posted. If I create a sample form exactly as per your sample it works fine.
But on the UltraGrid, it appears the BeforeDropDown event for the DateTimeEditor doesn't fire - is that possible?
Is there another event I can hook to do this?
Well, I now know from another thread that the events don't fire for the embedded editor.
What I now need to figure out is what event I can get from the grid to intercept the grid using the DateTimeEditor and instead pop the MonthCalendar up to get the date.
I've tried in the BeforeEnterEditMode event but the problem with that is that it isn't an event where you want to cancel ...
Any thoughts?
Hi,
Maybe one possible approach could be if you are using BeforeCellListDropDown() event of your UltraGrid. For example:
void ultraGrid1_BeforeCellListDropDown(object sender, Infragistics.Win.UltraWinGrid.CancelableCellEventArgs e){ e.Cancel = true; mc.Parent = ultraGrid1; mc.Location = new Point(ultraGrid1.ActiveCell.GetUIElement().Rect.X, ultraGrid1.ActiveCell.GetUIElement().Rect.Y + 23); mc.Show(); mc.DateSelected += new DateRangeEventHandler(mc_DateSelected);}
Please note that in void mc_DateSelected() event you should replace ultraDateTimeEditor1.DateTime with ultraGrid1.ActiveCell.Value.
Please let me know if you have any questions.
Here is the sample
Hello rranjan1471,
I`m not familiar with your scenario, but I try to reproduce it in a small sample. Could you please take a look at the attached sample for more details and let me know if you think that I didn`t reproduce your case. Please feel free to modify this sample and revert it back to me. I`ll be glad to research it for you.
If you have any questions do not hesitate to write me
I am using UltraGrid in my application.
That grid contains only one column called value.
Depeneidng on some criteria , in run time i am setting editor component of the column value.
When i m setting it to DateTime havin mask input, format string evey thing set as
FormatString =
"dd/MM/yyyy hh:mm:ss",
MaskInput =
"dd/mm/yyyy hh:mm:ss".
When i am running the application, second section is not appearing in the grid cell also its not allowing me to enter more than 12 number i.e. if i try to enter 13 or more than that it's not allowing me to do that.
Please let me know in case some thing specific needs to be done for getting both the above mentioned point done.
Request you to reply at the earliest.
Thanks for your feedback. If you have any further questions, please do not hesitate to write us
I'm afraid I ran out of time to try this and went with a more pragmatic solution.
I let the users flip the masks on the two DateTimeEditors between {LOC} hh:mm tt and {LOC} mm/dd/yy hh:mm tt - this meets the requirement.
I'll go back and look at the last alternative proposed in the next quiet moment.
Thanks!