2010-08-19 4 views
0

У меня есть следующий ASPX страница:Ошибки при удалении всех дочерних элементов управления из родительского контроля

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" 
    CodeBehind="newsEditor.aspx.cs" Inherits="ExpertSiteV2.newsEditor" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 
<%@ Register Assembly="ExpertSiteV2" Namespace="ExpertSiteV2" TagPrefix="custom" %> 
<asp:Content ID="Content3" ContentPlaceHolderID="Main" runat="server"> 
    <asp:Panel ID="Panel1" runat="server"> 
     <asp:Panel ID="Panel2" runat="server" Width="660" Style="margin-bottom: 10px;"> 
      <asp:Label ID="Label1" runat="server" Text="Label" Width="150">Заголовок новости</asp:Label> 
      <asp:TextBox ID="newsTitle" runat="server" Width="500" Style="float: right;"></asp:TextBox> 
     </asp:Panel> 
     <custom:CustomEditor ID="Editor3" runat="server" Height="300" Width="660" BackColor="White" /> 
     <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
     </asp:ToolkitScriptManager> 
     <asp:Panel ID="Panel3" runat="server" Style="margin-top: 5px;" CssClass="buttonPanel"> 
      <asp:ImageButton ID="SaveImageButton1" runat="server" ImageUrl="img/save_32.png" 
       ToolTip="Сохранить новость" /> 
      <asp:LinkButton ID="SaveLinkButton1" runat="server" ToolTip="Сохранить новость">Сохранить</asp:LinkButton> 
      <asp:ImageButton ID="ImageButton2" runat="server" CausesValidation="False" ImageUrl="img/block_32.png" 
       PostBackUrl="news.aspx" ToolTip="Вернуться к странице новостей" /> 
      <asp:LinkButton ID="LinkButton2" runat="server" ToolTip="Вернуться к странице новостей" 
       CausesValidation="False" PostBackUrl="news.aspx">Отмена</asp:LinkButton> 
     </asp:Panel> 
     <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Заголовок должен быть заполнен!" 
      ControlToValidate="newsTitle" Display="Dynamic"> 
     </asp:RequiredFieldValidator> 
    </asp:Panel> 
</asp:Content> 

Я хочу, чтобы удалить все содержимое Panel1. Я пишу код:

Panel1.Controls.Clear(); 

Но это не работает, и я получаю сообщение:

Page cannot be null. Please ensure that this operation is being performed in the context of an ASP.NET request. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Page cannot be null. Please ensure that this operation is being performed in the context of an ASP.NET request.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[InvalidOperationException: Page cannot be null. Please ensure that this operation is being performed in the context of an ASP.NET request.]
System.Web.UI.ScriptManager.get_IPage() +373832 System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e) +54
System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +8698462
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1029

Blockquote

Что случилось? Как я должен делать это правильно?

+0

Вы пробовали то же самое с Panel2, чтобы убедиться, что звонок работает? Если вызов работает, то я думаю, что это означает, что он не только убивает дочерние элементы управления, но и главный элемент управления (сам). Однако я бы не подумал, что это так, но я могу ошибаться. – XstreamINsanity

+0

Да, другие панели (panel2, panel3) удаляют все их дочерние элементы (но не сами). Хорошо. Но Panel1 не хочет удалять дочерние элементы управления (даже если он содержится в другой панели или имеет соседние панели, чтобы содержимое не было пустым) –

+0

Я думаю, что проблема в дочерних элементах управления. –

ответ

0

Хорошо, я написал что-то вроде этого:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" 
CodeBehind="newsEditor.aspx.cs" Inherits="ExpertSiteV2.newsEditor" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 
<%@ Register Assembly="ExpertSiteV2" Namespace="ExpertSiteV2" TagPrefix="custom" %> 
<asp:Content ID="Content3" ContentPlaceHolderID="Main" runat="server"> 
    <asp:Panel ID="Panel4" runat="server"> 
     <asp:Panel ID="Panel1" runat="server"> 
      <asp:Panel ID="Panel2" runat="server" Width="660" Style="margin-bottom: 10px;"> 
       <asp:Label ID="Label1" runat="server" Text="Label" Width="150">Заголовок новости</asp:Label> 
       <asp:TextBox ID="newsTitle" runat="server" Width="500" Style="float: right;"></asp:TextBox> 
      </asp:Panel> 
      <custom:CustomEditor ID="Editor3" runat="server" Height="300" Width="660" BackColor="White" /> 
      <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> 
      </asp:ToolkitScriptManager> 
      <asp:Panel ID="Panel3" runat="server" Style="margin-top: 5px;" CssClass="buttonPanel"> 
       <asp:ImageButton ID="SaveImageButton1" runat="server" ImageUrl="img/save_32.png" 
        ToolTip="Сохранить новость" /> 
       <asp:LinkButton ID="SaveLinkButton1" runat="server" ToolTip="Сохранить новость">Сохранить</asp:LinkButton> 
       <asp:ImageButton ID="ImageButton2" runat="server" CausesValidation="False" ImageUrl="img/block_32.png" 
        PostBackUrl="news.aspx" ToolTip="Вернуться к странице новостей" /> 
       <asp:LinkButton ID="LinkButton2" runat="server" ToolTip="Вернуться к странице новостей" 
        CausesValidation="False" PostBackUrl="news.aspx">Отмена</asp:LinkButton> 
      </asp:Panel> 
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Заголовок должен быть заполнен!" 
       ControlToValidate="newsTitle" Display="Dynamic"> 
      </asp:RequiredFieldValidator> 
     </asp:Panel> 
    </asp:Panel> 
</asp:Content> 

Вот еще одна панель, которая содержит все. И я написал:

Panel4.Controls.Clear(); 

Он отлично работает. Я до сих пор не знаю, почему Panel1 не хочет удалять дочерние элементы управления. Если кто-то знает, просто напишите ответ.

0

Разве вы не можете просто скрыть панель? Panel1.Visible = false. почему вы хотите удалить элементы управления.

Aha нормально я получаю вопрос сейчас: Заканчивать этот проект, http://www.codeproject.com/KB/user-controls/DynamicUC.aspx

+0

Но я не хочу, чтобы никто не получал доступ к этим элементам через исходный код html-страницы. –

Смежные вопросы