2009-07-08 78 views
0

我希望能夠通過JavaScript以及它的面板等返回一個以編程方式生成的可摺疊面板擴展器。我有面板和相關的表格,但是當我嘗試附加cpe時會中斷。並返回一個錯誤:通過ajax/javascript返回CollapsiblePanelExtender

CPE的面板和等正由一個WebService generaged,我試圖讓JS寫什麼web服務返回的特定字段動態

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); 
        } 
       } 

我該如何解決這個問題?

回答

0

看起來你需要一個Page對象與ScriptManager來呈現CollapsiblePanelExtender,這是有道理的,因爲你需要一些腳本才能正常工作。

因此,也許你可以試試下面的辦法來渲染表:

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(); 

奧利弗