I am trying to implement a ComboBox inside a ToolTip which consists of a user control. When I click in the combox, I get the following error:
The target 'ctl100$ctl100$PageContent$PageContent$ctl11$drpdwnEmail1' for the callback could not be found or did not implement ICallbackEventHandler
I am thinking it is because the user control that contains the above ComboBox is added dynamically, and when the OnItemsRequested handler is fired on the combobox, it no longer exists. The solutions I have found on this site say to make sure to add the control each time OnPageLoad. However, this isn't realistic because parameters are passed to the control depending on which row of a Repeater we are in....
MyPage.aspx:
The target 'ctl100$ctl100$PageContent$PageContent$ctl11$drpdwnEmail1' for the callback could not be found or did not implement ICallbackEventHandler
I am thinking it is because the user control that contains the above ComboBox is added dynamically, and when the OnItemsRequested handler is fired on the combobox, it no longer exists. The solutions I have found on this site say to make sure to add the control each time OnPageLoad. However, this isn't realistic because parameters are passed to the control depending on which row of a Repeater we are in....
MyPage.aspx:
<
telerik:RadToolTipManager
ID
=
"RadToolTipManager1"
OffsetY
=
"-1"
HideEvent
=
"ManualClose"
ShowEvent
=
"OnClick"
Skin
=
"Office2010Silver"
Width
=
"500"
Height
=
"175"
runat
=
"server"
OnAjaxUpdate
=
"OnAjaxUpdate"
RelativeTo
=
"Element"
Position
=
"MiddleLeft"
/>
<
asp:Repeater
ID
=
"rptrMyRepeater"
runat
=
"server"
OnItemDataBound
=
"myRepeater_OnItemDataBound"
>
<
ItemTemplate
>
<
div
>
<
asp:LinkButton
runat
=
"server"
ID
=
"btnEmailAttachment"
Text
=
"Open Popup"
OnClientClick
=
"return false;"
/>
</
div
>
</
ItemTemplate
>
</
asp:Repeater
>
MyPage.aspx.cs
protected
void
myRepeater_OnItemDataBound(
object
o, RepeaterItemEventArgs e)
{
if
(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
RadToolTipManager1.TargetControls.Add(((LinkButton)e.Item.FindControl(
"btnEmailAttachment"
)).ClientID, Convert.ToString(DataBinder.Eval(e.Item.DataItem,
"RequestID"
)),
true
);
}
}
protected
void
OnAjaxUpdate(
object
sender, ToolTipUpdateEventArgs args)
{
int
requestID = Convert.ToInt32(args.Value);
Control ctrl = Page.LoadControl(
"EmailBox.ascx"
);
args.UpdatePanel.ContentTemplateContainer.Controls.Add(ctrl);
CollateralCentral_EmailBox emailBox = (CollateralCentral_EmailBox)ctrl;
emailBox.RequestID = requestID;
}
EmailBox.ascx
<
telerik:RadAjaxPanel
ID
=
"RadAjaxPanel1"
runat
=
"server"
>
<
telerik:RadComboBox
ID
=
"drpdwnEmail1"
runat
=
"server"
Width
=
"350px"
Height
=
"140px"
EnableLoadOnDemand
=
"True"
OnItemsRequested
=
"RadComboBox1_ItemsRequested"
/>
</
telerik:RadAjaxPanel
>
EmailBox.ascx.cs
protected
void
RadComboBox1_ItemsRequested(
object
o, RadComboBoxItemsRequestedEventArgs e)
{
drpdwnEmail1.Items.Clear();
if
(e.Text.Trim().Length > 2)
// make them type at least 3 letters
{
DataTable dt = GetDataTable();
for
(
int
i = 0; i < dt.Rows.Count; i++)
{
drpdwnEmail1.Items.Add(
new
RadComboBoxItem((
string
)dt.Rows[i][
"Email_addr"
], Convert.ToString(dt.Rows[i][
"Email_addr"
])));
}
dt.Dispose();
}
}
I am not sure in this example how to get past this error - I need to load the control in the manner I am loading it and can't do it each time a postback happens, and I need to populate the email dropdown server-side because there are about 100,000 email addresses so I want them to start typing before they see anything...
Any help would be greatly appreciated!!!