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