This is a migrated thread and some comments may be shown as answers.

TimePicker Column

1 Answer 175 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Brian
Top achievements
Rank 1
Brian asked on 22 Jan 2011, 05:47 PM
I have a DataGrid that i have a TimePicker column in.  I manipulated the sample custom column to just include a TimePicker element.  It works fine except for when the element tries to validate the input selected.  I have bound it to a TimeSpan item, but it gives me the validation error "Object of System.DateTime cannot be converted to TimeSpan".  So im unsure where to bind the TimeSpan item to get the selected DateTime.TimeOfDay??

 

 

 

<telerik:RadGridView AutoGenerateColumns="False" NewRowStyle="{StaticResource NewRowStyle}" RowStyle="{StaticResource RowStyle}" Foreground="White" HorizontalGridLinesBrush="White" Margin="10,10,210,22" Name="groupGrid" SelectionMode="Single" SelectionUnit="FullRow" VerticalGridLinesBrush="White" SelectionChanged="groupGrid_SelectionChanged" CellEditEnded="groupGrid_CellEditEnding" RowIndicatorVisibility="Collapsed" ShowGroupPanel="False" ShowInsertRow="True" RowEditEnded="groupGrid_RowEditEnded">

 

 

 

 

<telerik:RadGridView.Columns>

 

 

 

 

<telerik:GridViewDataColumn Header="Task Name: " DataMemberBinding="{Binding Name}" />

 

 

 

 

<telerik:GridViewDataColumn Header="Description: " DataMemberBinding="{Binding Description}" />

 

 

 

 

<telerik:GridViewDataColumn Header="Solution: " DataMemberBinding="{Binding Solution}" />

 

 

 

 

<my:TimePickerColumn DataMemberBinding="{Binding StartTime}" Header="Start Time" TimeInterval="0:30:0"/>

 

 

 

 

 

<telerik:GridViewDataColumn Header="End Time: " DataMemberBinding="{Binding EndTime}" />

 

 

 

 

<telerik:GridViewDataColumn Header="Elapsed:" UniqueName="Elapsed" DataMemberBinding="{Binding ElapsedTime}" />

 

 

 

 

 

</telerik:RadGridView.Columns>

 

 

 

 

</telerik:RadGridView>

 

public class TimePickerColumn : GridViewBoundColumnBase
    {
        public TimeSpan TimeInterval
        {
            get
            {
                return (TimeSpan)GetValue(TimeIntervalProperty);
            }
            set
            {
                SetValue(TimeIntervalProperty, value);
            }
        }
  
        public static readonly DependencyProperty TimeIntervalProperty =  DependencyProperty.Register("TimeInterval", typeof(TimeSpan), typeof(TimePickerColumn), new PropertyMetadata(TimeSpan.FromHours(1d)));
  
        public override FrameworkElement CreateCellEditElement(GridViewCell cell, object dataItem)
        {
            this.BindingTarget =  RadTimePicker.SelectedValueProperty;
  
            RadTimePicker picker = new RadTimePicker();
            picker.IsTooltipEnabled = false;
  
            picker.TimeInterval = this.TimeInterval;
             
            picker.SetBinding(this.BindingTarget, this.CreateValueBinding());
  
            return picker;
        }
  
        public override object GetNewValueFromEditor(object editor)
        {
            RadTimePicker picker = editor as RadTimePicker;
            if (picker != null)
            {
                picker.DateTimeText = picker.SelectedTime.Value.ToString();
            }
  
            return base.GetNewValueFromEditor(editor);
        }
  
        private Binding CreateValueBinding()
        {
            Binding valueBinding = new Binding();
            valueBinding.Mode = BindingMode.TwoWay;
            valueBinding.NotifyOnValidationError = true;
            valueBinding.ValidatesOnExceptions = true;
            valueBinding.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
            valueBinding.Path = new PropertyPath(this.DataMemberBinding.Path.Path);
  
            return valueBinding;
        }
    }

1 Answer, 1 is accepted

Sort by
0
Accepted
Vanya Pavlova
Telerik team
answered on 24 Jan 2011, 04:52 PM
Hi Brian,

 
Please take a look at the following online help article "Create Custom DateTimePicker Column" and let me know how if you need any further assistance.

Best wishes,
Vanya Pavlova
the Telerik team
Let us know about your Windows Phone 7 application built with RadControls and we will help you promote it. Learn more>>
Tags
GridView
Asked by
Brian
Top achievements
Rank 1
Answers by
Vanya Pavlova
Telerik team
Share this question
or