or
The custom collection is needed because the user should be able to select the time 23:59. But this does not work in other timezones: when not in the same timezone as UTC time, the picker "results" in another time than the selected. For example, if I pick 23:59, the time in the textbox results in 21:59 for my timezone. Every other time is ok - for example if I pick 12:00, it picks the right one. It seems that the property UseClientTimeOffset does not work for this particular time 23:59?
public static void SetA4DValidTimeView(this RadTimeView timeView) { ArrayList arrayList = new ArrayList(); arrayList.Add(new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 23, 59, 0)); for (int hour = 1; hour < 24; hour++) arrayList.Add(DateTime.UtcNow.Date.AddHours(hour)); timeView.DataList.DataSource = arrayList; }
I created a class in order to use the UseClientTimeOffset property.
public class A4DRadTimeView: RadTimeView { public A4DRadTimeView() { this.SetA4DValidTimeView(); base.UseClientTimeOffset = true; } }<MCN:A4DRadDateTimePicker runat="server" ID="dateTimePickerDepartureTime" Enabled="false" CssClass="labelregular" Calendar-CultureInfo="en-US" SharedTimeViewID="A4DSharedTimeView"> <DateInput EmptyMessage="____-__-__ __:__"> <ClientEvents OnValueChanged="inputValueChanged" /> </DateInput> </MCN:A4DRadDateTimePicker> <MCN:A4DRadTimeView ID="A4DSharedTimeView" runat="server"></MCN:A4DRadTimeView>function inputValueChanged(sender, args) { var newValue = args.get_newValue(); var dateFormat = sender.get_dateFormat(); var date = args.get_newDate(); if (date != null) { if (newValue.indexOf(sender.get_dateFormatInfo().TimeSeparator) < 0 && date.getHours() == 0 && date.getMinutes() == 0 && date.getSeconds() == 0) { date.setHours(0); date.setMinutes(01); sender.set_value(date.format(dateFormat)); } } }
<telerik:RadGrid ID="RadGrid1" Width="99%" OnNeedDataSource="Grid_NeedDataSource" AllowFilteringByColumn="True" AllowSorting="True" PageSize="20" ShowFooter="True" AllowPaging="True" runat="server" AutoGenerateColumns="False" GridLines="None" Skin="Office2007"> <GroupingSettings CaseSensitive="false" /> <MasterTableView ShowHeadersWhenNoRecords="true" AllowFilteringByColumn="True" ShowFooter="True" DataKeyNames="OffenseTypeId" TableLayout="Fixed" ClientDataKeyNames="OffenseTypeId, StateCode, Description"> <Columns> <telerik:GridClientSelectColumn HeaderStyle-Width="30px" /> <telerik:GridBoundColumn DataField="StateCode" HeaderText="VCC Code" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="true" FilterControlWidth="70%"> <HeaderStyle Width="120px" /> </telerik:GridBoundColumn> <custom:OffenseModifierFilteringColumn DataField="ModifierDescription" HeaderText="Offense Modifier" AllowFiltering="true" FilterControlWidth="90%"> <HeaderStyle Width="200px" /> <ItemTemplate> <%# Eval("ModifierDescription")%> </ItemTemplate> </custom:OffenseModifierFilteringColumn> <telerik:GridBoundColumn DataField="Description" HeaderText="Description" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="true" FilterControlWidth="95%"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="OffenseStatute" HeaderText="Statute" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="true" FilterControlWidth="70%"> <HeaderStyle Width="120px" /> </telerik:GridBoundColumn> </Columns> </MasterTableView> <ClientSettings> <Selecting AllowRowSelect="true" /> <ClientEvents OnRowSelected="RowSelected" /> </ClientSettings> </telerik:RadGrid>/// <summary> /// Custom Filtering column for the SelectOffense /// </summary> public class OffenseModifierFilteringColumn : GridTemplateColumn { /// <summary> /// Setups the filter controls. /// </summary> /// <param name="cell">The cell.</param> protected override void SetupFilterControls(TableCell cell) { var rcBox = new RadComboBox { ID = "DropDownList1", AutoPostBack = true, DataTextField = DataField, DataValueField = DataField }; rcBox.SelectedIndexChanged += rcBox_SelectedIndexChanged; var table = GetDataTable(); var row = table.NewRow(); row[DataField] = ""; table.Rows.InsertAt(row, 0); rcBox.DataSource = table; cell.Controls.Add(rcBox); } /// <summary> /// Sets the current filter value to control. /// </summary> /// <param name="cell">The cell.</param> protected override void SetCurrentFilterValueToControl(TableCell cell) { if (!(CurrentFilterValue == "")) { ((RadComboBox)cell.Controls[0]).Items.FindItemByText(CurrentFilterValue).Selected = true; } } /// <summary> /// Gets the current filter value from control. /// </summary> /// <param name="cell">The cell.</param> /// <returns></returns> protected override string GetCurrentFilterValueFromControl(TableCell cell) { var currentValue = ((RadComboBox)cell.Controls[0]).SelectedItem.Value; CurrentFilterFunction = (currentValue != "") ? GridKnownFunction.EqualTo : GridKnownFunction.NoFilter; return currentValue; } /// <summary> /// Handles the SelectedIndexChanged event of the rcBox control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs"/> instance containing the event data.</param> protected void rcBox_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) { ((GridFilteringItem)(((RadComboBox)sender).Parent.Parent)).FireCommandEvent("Filter", new Pair()); } /// <summary> /// Gets the filter data field. /// </summary> /// <returns></returns> protected override string GetFilterDataField() { return DataField; } #region Private Members /// <summary> /// Gets the data table. /// </summary> /// <returns></returns> public DataTable GetDataTable() { var offenseModifiers = BusinessProcessManagerFactory<IOffenseTypeManager>.Instance.Get().GetOffenseModifiers(); // convert to datatable var myDataTable = SqlTableTypeHelper.CreateTableType(offenseModifiers.Select(x => x.ModifierDescription).ToList(), typeof(String), "ModifierDescription"); return myDataTable; } #endregion }
function onRequestStart(sender, args) { if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0) { args.set_enableAjax(false); } }