I have a user control creates a control which includes a RadDateTimePicker. The datetimepicker has a SelectedDateChanged event that fires and runs the code accordingly. Since it is dynamically created, I need to dynamically add it to the RadAjaxManager that already exists. My current approach doesn't seem to work, and I get a full postback.
User Control
public
partial
class
CategoryHolder : System.Web.UI.UserControl
{
public
string
_category;
public
string
_mptt;
public
DateTime _startDate;
public
DateTime _endDate;
public
EventHandler startDateChanged;
public
EventHandler endDateChanged;
public
string
Category
{
get
{
return
_category;
}
set
{
_category = value;
}
}
public
string
MPTT
{
get
{
return
_mptt;
}
set
{
_mptt = value;
}
}
public
DateTime StartDate
{
get
{
return
_startDate;
}
set
{
_startDate = value;
}
}
public
DateTime EndDate
{
get
{
return
_endDate;
}
set
{
_endDate = value;
}
}
protected
void
Page_Init(
object
sender, EventArgs e)
{
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
Label lbl =
new
Label();
HiddenField hf =
new
HiddenField();
RadDateTimePicker start =
new
RadDateTimePicker();
RadDateTimePicker end =
new
RadDateTimePicker();
start.AutoPostBack =
true
;
start.SelectedDateChanged +=
new
Telerik.Web.UI.Calendar.SelectedDateChangedEventHandler(start_SelectedDateChanged);
start.ClientIDMode = System.Web.UI.ClientIDMode.Static;
start.ID = MPTT +
"StartControl"
;
start.DatePopupButton.Visible =
false
;
start.TimePopupButton.Visible =
false
;
end.AutoPostBack =
true
;
end.SelectedDateChanged +=
new
Telerik.Web.UI.Calendar.SelectedDateChangedEventHandler(end_SelectedDateChanged);
end.ClientIDMode = System.Web.UI.ClientIDMode.Static;
end.ID = MPTT +
"EndControl"
;
end.DatePopupButton.Visible =
false
;
end.TimePopupButton.Visible =
false
;
lbl.Text = Category;
hf.Value = MPTT;
start.SelectedDate = StartDate;
end.SelectedDate = EndDate;
this
.Controls.Add(lbl);
this
.Controls.Add(hf);
this
.Controls.Add(start);
this
.Controls.Add(end);
}
void
start_SelectedDateChanged(
object
sender, Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
{
if
(
this
.startDateChanged !=
null
)
{
this
.startDateChanged(
this
, e);
}
}
void
end_SelectedDateChanged(
object
sender, Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
{
if
(
this
.endDateChanged !=
null
)
{
this
.endDateChanged(
this
, e);
}
}
}
Test Page using control:
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"rsm"
runat
=
"server"
></
telerik:RadScriptManager
>
<
telerik:RadAjaxManager
ID
=
"ram"
runat
=
"server"
></
telerik:RadAjaxManager
>
<
div
>
<
asp:PlaceHolder
ID
=
"Placeholder"
runat
=
"server"
></
asp:PlaceHolder
>
</
div
>
</
form
>
</
body
>
</
html
>
Test Page C#:
protected void Page_Load(object sender, EventArgs e)
{
CategoryHolder ch = new CategoryHolder();
ch.Category = "Test Category";
ch.MPTT = "dfdfdopfksdopfsdop";
ch.StartDate = DateTime.Today;
ch.EndDate = DateTime.Today.AddDays(5);
ch.startDateChanged += new EventHandler(startPicker_SelectedDateChanged);
RadAjaxManager manager = RadAjaxManager.GetCurrent(Page);
RadAjaxLoadingPanel loadingPanel = new RadAjaxLoadingPanel();
Placeholder.Controls.Add(ch);
manager.AjaxSettings.AddAjaxSetting(ch, ch, loadingPanel);
manager.AjaxSettings.AddAjaxSetting(ch, Placeholder, loadingPanel);
}
void startPicker_SelectedDateChanged(object sender, EventArgs e)
{
//Yay it runs, but on a full postback
}