2010-08-19 30 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 2010-08-19 12:51:55

+0

是的,其他面板(panel2,panel3)刪除所有的孩子(但不是自己)。這很好。 但Panel1不想刪除子控件(即使它包含在其他面板或它有鄰居面板,所以內容不爲空) – 2010-08-19 13:09:59

+0

我認爲問題出在子控件中。 – 2010-08-19 13:10:59

回答

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。爲什麼你想要刪除控件。

啊哈確定我現在明白了一個問題: 退房這個項目,http://www.codeproject.com/KB/user-controls/DynamicUC.aspx

+0

但我希望沒有人通過html頁面的源代碼訪問此元素。 – 2010-08-19 12:51:17