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

GridDateTimeColumn - Error when trying to set default time

2 Answers 162 Views
Grid
This is a migrated thread and some comments may be shown as answers.
JJ
Top achievements
Rank 1
JJ asked on 27 Mar 2014, 11:54 PM
Hi

I have a RadGrid with 3 columns. One of them is a GridDateTimeColumn of type DateTimePicker. I'm trying to set the default time to 4pm instead of midnight when a date is selected.

I found code on another post that shows how to set the default time for a RadDateTimePicker by using a client event for OnDateSelected but I can't get it to work if the datetimepicker is in a grid.

I added a client event for onDateSelected in the code behind (in the RadGrid1_ItemCreated sub) and it does get called when I select a date but it gives me an error when I try to set the time. The error is "Sys.ArgumentNullException: Value cannot be null. Parameter name: instance"

The client event code is

 <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
   <script type="text/javascript">  
       var isTimeSet = false;
       function timeSelecting(sender, args) {
           isTimeSet = true;
       }
       function dateSelected(sender, args) {
                        if (args.get_oldDate() == null && !isTimeSet) {
                            args.set_cancel(true);
                            isTimeSet = true;
                            sender.get_timeView().setTime(16, 0, 0, 0); //I'm getting the error on this line
                        }
                        if (isTimeSet) {
                            isTimeSet = false;
                        }
        }
    </script>
   </telerik:RadCodeBlock>

This code does work with a RadDateTimePicker on the page but won't work for the RadDateTimepicker on the RadGrid. Is there any other way I can set the default time? I'm using version 2013.3.1114.40

My RadGrid -

<telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0" GridLines="None" AutoGenerateDeleteColumn="True"
                        AutoGenerateEditColumn="True" AutoGenerateColumns="False" Width="75%">
<MasterTableView CommandItemDisplay="Top" EditMode="InPlace" DataKeyNames="TEST_ID"
        nomasterrecordstext="No records entered">
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"
        visible="False"></RowIndicatorColumn>
<ExpandCollapseColumn Visible="True"
        FilterControlAltText="Filter ExpandColumn column" Created="True"></ExpandCollapseColumn>
    <Columns>
        <telerik:GridDateTimeColumn AllowFiltering="False" AllowSorting="False"
            DataField="TEST_DATE" DataType="System.DateTime"
            FilterControlAltText="Filter column column" HeaderText="Test Date and Time"
            PickerType="DateTimePicker" ShowSortIcon="False" UniqueName="TEST_DATE" >
                <ColumnValidationSettings EnableRequiredFieldValidation="true">
                    <RequiredFieldValidator ForeColor="Red" ErrorMessage="!"></RequiredFieldValidator>                   
                </ColumnValidationSettings>               
        </telerik:GridDateTimeColumn>
        <telerik:GridNumericColumn AllowFiltering="False" AllowSorting="False"
            DataField="TEST" DecimalDigits="1" FilterControlAltText="Filter column1 column"
            HeaderText="Test Column" UniqueName="TEST">
                <ColumnValidationSettings EnableRequiredFieldValidation="true">
                    <RequiredFieldValidator ForeColor="Red" ErrorMessage="!"></RequiredFieldValidator>                                                
                </ColumnValidationSettings>
        </telerik:GridNumericColumn>
        <telerik:GridBoundColumn AllowFiltering="False" AllowSorting="False"
            DataField="TEST_ID" FilterControlAltText="Filter column2 column"
            HeaderText="Test ID" UniqueName="TEST_ID" Visible="False">    
        </telerik:GridBoundColumn>
    </Columns>
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
    <CommandItemTemplate>
        <table class="style1">
            <tr>
                <td align="right">
                    <asp:LinkButton ID="add" runat="server" CommandName="InitInsert"
                        ForeColor="#0066FF" Text="Add more"></asp:LinkButton>
                </td>
            </tr>
        </table>
    </CommandItemTemplate>
</MasterTableView>
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
<FilterMenu EnableImageSprites="False"></FilterMenu>
                    </telerik:RadGrid>

Adding Client Event in code behind

 Protected Sub RadGrid1_ItemCreated(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemCreated
        If (TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode) Then
   If TypeOf e.Item Is GridEditFormInsertItem OrElse TypeOf e.Item Is GridDataInsertItem Then
               
   Dim editor1 As GridDateTimeColumnEditor = CType(item.EditManager.GetColumnEditor("TEST_DATE"), GridDateTimeColumnEditor)
               
   Dim dtp1 As RadDateTimePicker = editor1.PickerControl                
               
                 dtp1.ClientEvents.OnDateSelected = "dateSelected"
                 Dim rtv1 As RadTimeView = editor1.SharedTimeView
                 rtv1.Interval = New TimeSpan(0, 30, 0)
   rtv1.OnClientTimeSelected = "timeSelecting"
             End If
     End If
 End Sub


Thanks

2 Answers, 1 is accepted

Sort by
0
Accepted
Jayesh Goyani
Top achievements
Rank 2
answered on 28 Mar 2014, 08:32 AM
Hello,

Please try with the below code snippet.

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
    <script>
        var isTimeSet = false;
        function timeSelecting(sender, args) {
            isTimeSet = true;
        }
        function dateSelected(sender, args) {
            if (args.get_oldDate() == null && !isTimeSet) {
                args.set_cancel(true);
                isTimeSet = true;
                var dt = new Date(args._newDate);
                dt.setHours(15, 0, 0, 0)
                sender.set_selectedDate(dt);
            }
            if (isTimeSet) {
                isTimeSet = false;
            }
        }
    </script>
</telerik:RadCodeBlock>


Thanks,
Jayesh Goyani
0
JJ
Top achievements
Rank 1
answered on 30 Mar 2014, 11:03 PM
That worked! Thank you. Much appreciated.
Tags
Grid
Asked by
JJ
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
JJ
Top achievements
Rank 1
Share this question
or