2009-07-08 7 views
0

Je voudrais être en mesure de retourner un extendeur de panneau pliable généré par programme via javascript avec son panneau et ainsi de suite. J'ai le panneau et les tables associées traversent très bien cependant quand j'essaye et attache le cpe il casse. et renvoie une erreur:Renvoyer un CollapsiblePanelExtender par/via ajax/javascript

Le panneau de cpe et tels sont en cours généré de manière par un WebService et je suis en train de faire JS pour écrire ce que le webservice retourne à un champ particulier dynamique

Microsoft JScript runtime error: Sys.Net.WebServiceFailedException: The server method 'Sub_Menu_Helper' failed with the following error: System.InvalidOperationException-- Page cannot be null. Please ensure that this operation is being performed in the context of an ASP.NET request.

   { 
        Label somelabel = new Label(); 
        somelabel.ID = somenumber.ToString(); 
        somelabel.Text = somenumber.ToString(); 
        subpnlContent.Controls.Add(somelabel); 
        ++somenumber; 
       } 

       CollapsiblePanelExtender cpeMenuLast = new CollapsiblePanelExtenderEx(); 
       cpeMenuLast.ID = "subcpe" + strMenuId + strParentHierarchyIds; 
       cpeMenuLast.TargetControlID = "subpnlContent" + strParentMenuId + "_" + strMenuId; 
       cpeMenuLast.ExpandControlID = "cellContent" + strParentMenuId + "_" + strMenuId; 
       cpeMenuLast.CollapseControlID = "cellContent" + strParentMenuId + "_" + strMenuId; 
       cpeMenuLast.Collapsed = bCollapsed; 
       cpeMenuLast.TextLabelID = strMenuName; 
       cpeMenuLast.ExpandedText = m_strButtonLabelHide; 
       cpeMenuLast.CollapsedText = m_strButtonLabelShow; 
       cpeMenuLast.ImageControlID = "imglnk" + strMenuId; 
       cpeMenuLast.CollapsedImage = "~/App_Themes/default/nbExpand.gif"; 
       cpeMenuLast.ExpandedImage = "~/App_Themes/default/nbCollapse.gif"; 
       cpeMenuLast.SuppressPostBack = true; 
       cpeMenuLast.ScrollContents = false; 

       //Add Everything 
       cellSubMenu.Controls.Add(subpnlContent); 
       cellSubMenu.Controls.Add(cpeMenuLast); 
       row.Cells.Add(cellSubMenu); 
       tbl.Rows.Add(row); 

       using (StringWriter sw = new StringWriter(sb)) 
       { 
        using (HtmlTextWriter tw = new HtmlTextWriter(sw)) 
        { 
         tbl.RenderControl(tw); 
        } 
       } 

Comment puis-je résoudre ce problème?

Répondre

0

On dirait que vous avez besoin d'un objet Page avec un ScriptManager pour rendre le CollapsiblePanelExtender, ce qui est logique puisque vous avez besoin d'un script pour qu'il fonctionne correctement.

Alors peut-être vous pouvez essayer de la façon suivante pour rendre votre table:

var page = new Page(); 
page.Controls.Add(new ScriptManager()); 
page.Controls.Add(tbl); 
var writer = new StringWriter(); 
HttpContext.Current.Server.Execute(page, writer, false); 
return writer.ToString(); 

Oliver

Questions connexes