Возврат CollapsiblePanelExtender через / через ajax/javascript
Я хотел бы иметь возможность вернуть сгенерированный программным способом удлинитель складной панели через javascript вместе с его панелью и так далее. У меня панель и связанные таблицы проходят очень хорошо, однако, когда я пытаюсь подключить cpe, он ломается. и возвращает ошибку:
Панель cpe и т.п. генерируются веб-сервисом, и я пытаюсь заставить JS написать, что веб-сервис динамически возвращает в определенное поле
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);
}
}
Как я могу это исправить?
1 ответ
Похоже, вам нужно 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();
Оливер