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!!!