Right, this is doing my head in.
I've extended a RadDatePicker to enable a pair of them to link up and essentially set the Min and Max dates of each other. Problem is that its not being persisted on postback. Like a custom user control which hasn't been saved in ControlState. Thing is, I can't see how to persist it...
Code for PairedRadDatePicker.cs:
And they are added to the page like so:
And the routine for the button in the page code behind:
On a normal web page, postback isn't a problem. On a Master/Content page, values are lost on postback.
I've done loads of user controls, loading and retrieving properties in ControlState. But this is different, I'm extending the RadDatePicker class and I can't see how to persist it.
Any pointers please?
kitster
I've extended a RadDatePicker to enable a pair of them to link up and essentially set the Min and Max dates of each other. Problem is that its not being persisted on postback. Like a custom user control which hasn't been saved in ControlState. Thing is, I can't see how to persist it...
Code for PairedRadDatePicker.cs:
using System;using System.Web;using Telerik.Web.UI;using System.Web.UI.WebControls;using System.ComponentModel;using System.Web.UI;namespace Sonic.Infrastructure{ public enum PairedMinMax { GreaterThan, GreaterThanOrEqual, LesserThan, LesserThanOrEqual } public class PairedRadDatePicker : RadDatePicker { public string PairedControlID { get; set; } public PairedMinMax PairedOperator { get; set; } public override string UniqueID { get { return this.ID; } } public override string ClientID { get { return this.ID; } } protected override void OnLoad(EventArgs e) { if (PairedControlID != null && PairedControlID != string.Empty) { this.ClientEvents.OnDateSelected = "function(){itsMinMaxRadDatePicker('" + this.ClientID + "', '" + PairedControlID + "', '" + PairedOperator.ToString() + "');}"; if (!Page.ClientScript.IsClientScriptIncludeRegistered("PairedRadDatePicker")) { Page.ClientScript.RegisterClientScriptInclude("PairedRadDatePicker", "/Scripts/PairedRadDatePicker.js"); } } } }}<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/FormMasterPage2.master" AutoEventWireup="true" CodeBehind="AcademicYearEdit.aspx.cs" Inherits="Sonic.Infrastructure.AcademicYearEdit" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><%@ Register Assembly="Sonic" Namespace="Sonic.Infrastructure" TagPrefix="sonic" %><asp:Content ID="Content3" ContentPlaceHolderID="MainContentPlaceHolder" runat="server"><p><sonic:PairedRadDatePicker ID="PairedDatePicker1" PairedControlID="PairedRadDatePicker2" SelectedDate="2010/05/06" PairedOperator="LesserThan" runat="server" /></p><p><sonic:PairedRadDatePicker ID="PairedRadDatePicker2" PairedControlID="PairedDatePicker1" PairedOperator="GreaterThan" runat="server" /></p><asp:Button ID="btnSave" OnClick="btnSave_Click" Text="save" runat="server" /><asp:Label ID="lblDates" runat="server" /></asp:Content>And the routine for the button in the page code behind:
protected void btnSave_Click(object sender, EventArgs e){ DateTime? st_date = PairedDatePicker1.SelectedDate; lblDates.Text = st_date.ToString();}On a normal web page, postback isn't a problem. On a Master/Content page, values are lost on postback.
I've done loads of user controls, loading and retrieving properties in ControlState. But this is different, I'm extending the RadDatePicker class and I can't see how to persist it.
Any pointers please?
kitster
