Hej alla gamla rävar någon särskild anledning till att du måste göra det där dynamisk i koden? Jag vill egentligen bara rendera ut vissa av collapsepanelsen när de behövs. Tyvärr så hjälper det inte att lägga ut grejerna direkt i aspx-filen, jag får då samma fel. Jag fattar bara inte varför det alltid är fel på den ena collapspaneln, det spelar ingen roll om jag skapar den ena före den andra det är alltid den i MyInit som den klagar påAJAX CollapsePanelExtender "not a registered extender"
har ett problem som jag har slitit mitt hår med i flera timmar nu. Jag försöker skapa några Collapsepanels i en WebUserControl. Jag gör detta dynamiskt i koden och jag lyfter sedan in ett antal usercontrols på en sida som har en masterpage där scriptmanagern ligger.
Först hade jag bara en Collapsepanel och då funkade allt klockers:
private void AddHelpText(string text)
{
AjaxControlToolkit.CollapsiblePanelExtender collapsepanel = new AjaxControlToolkit.CollapsiblePanelExtender();
collapsepanel.CollapsedImage = "~/Images/collapse.jpg";
collapsepanel.ExpandedImage = "~/Images/expand.jpg";
collapsepanel.ExpandedText = "(Hide Details...)";
collapsepanel.CollapsedText = "(Show Details...)";
collapsepanel.SuppressPostBack = true;
collapsepanel.Collapsed = true;
Panel helptextHeader = new Panel();
helptextHeader.ID = "helptextHeader";
HtmlGenericControl div = new HtmlGenericControl("div");
div.Attributes["class"] = "heading";
div.Attributes["style"] = "cursor: pointer;";
helptextHeader.Controls.Add(div);
ImageButton imagebutton = new ImageButton();
imagebutton.ID = "ToggleImage";
imagebutton.ImageUrl = "~/Images/collapse.jpg";
div.InnerText = "Instructions";
div.Controls.Add(imagebutton);
HelptextContainer.Controls.Add(helptextHeader);
Panel helpTextContent = new Panel();
helpTextContent.ID = "helpTextContent";
helpTextContent.Attributes["style"] = "overflow:hidden;";
//helpTextContent.Height = "0px";
HtmlGenericControl text2 = new HtmlGenericControl("p");
text2.InnerText = text;
helpTextContent.Controls.Add(text2);
collapsepanel.CollapseControlID = "helptextHeader";
collapsepanel.ExpandControlID = "helptextHeader";
collapsepanel.ImageControlID = "ToggleImage";
collapsepanel.TargetControlID = "helpTextContent";
HelptextContainer.Controls.Add(helpTextContent);
HelptextContainer.Controls.Add(collapsepanel);
}
sen försöker jag skapa en annan funktion
private void MyInit()
{
AjaxControlToolkit.CollapsiblePanelExtender collapsepanel2 = new AjaxControlToolkit.CollapsiblePanelExtender();
collapsepanel2.ID = "collapsepanel2";
collapsepanel2.CollapsedImage = "~/Images/collapse.jpg";
collapsepanel2.ExpandedImage = "~/Images/expand.jpg";
collapsepanel2.ExpandedText = "(Hide note...)";
collapsepanel2.CollapsedText = "(Show note...)";
collapsepanel2.SuppressPostBack = true;
collapsepanel2.Collapsed = true;
Panel NotePanelControl = new Panel();
NotePanelControl.ID = "NotePanelControl";
//NotePanelControl.Height = "50px";
//NotePanelControl.Width = "100%";
HtmlGenericControl div = new HtmlGenericControl("div");
div.Attributes["class"] = "heading";
div.Attributes["style"] = "cursor: pointer;";
div.InnerText = "Note";
ImageButton imagebutton = new ImageButton();
imagebutton.ID = "NoteToggleImage";
imagebutton.ImageUrl = "~/Images/collapse.jpg";
div.Controls.Add(imagebutton);
NotePanelControl.Controls.Add(div);
Panel NotePanelContent = new Panel();
NotePanelContent.ID = "NotePanelContent";
NotePanelContent.Attributes["style"] = "overflow:hidden;";
TextBox TextBoxNote = new TextBox();
TextBoxNote.ID = "TextBoxNote";
TextBoxNote.TextMode = TextBoxMode.MultiLine;
//TextBoxNote.Width = new System.Web.UI.WebControls.Unit(195,UnitType.Pixel);
NotePanelContent.Controls.Add(TextBoxNote);
collapsepanel2.CollapseControlID = "NotePanelControl";
collapsepanel2.ExpandControlID = "NotePanelControl";
collapsepanel2.ImageControlID = "NoteToggleImage";
collapsepanel2.TargetControlID = "NotePanelContent";
NoteRow.Controls.Add(NotePanelControl);
NoteRow.Controls.Add(NotePanelContent);
NoteRow.Controls.Add(collapsepanel2);
}
Kör jag inte myinit funkar allt skitbra. Kör jag MyInit innan jag kör AddHelpText så får jag:
"Extender control 'collapsepanel2' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors()."
Nån som kan hjälpa till här, för jag fattar nada?
Sv: AJAX CollapsePanelExtender "not a registered extender"
lägg in controllerna i aspx filen i stället, då sköts ju allt automatiskt och du slipper felen.
plus att du slipper ha ui kod i din cs fil.Sv:AJAX CollapsePanelExtender "not a registered extender"