asp : Panel 및 asp : TreeView를 사용하여 탭으로 구성된 사용자 인터페이스를 만들려고합니다. 두 TreeViews 백그라운드에서 초기화 된 유지하고 있어요 하나를 표시해야 할 때 패널을 지우고 적절한 TreeView 추가하십시오.System.Web.UI.Controls.ControlCollection.Add Throws ArgumentOutOfRangeException
포스트 백 때문에 페이지가 다시로드 될 때 멀리 가지 않도록 Session 변수에 저장된 TreeView를 유지합니다.
그러나 컨트롤을 추가하려고하면 ArgumentOutOfRangeException이 발생합니다. 중요한 코드의 작은 스 니펫은 다음과 같습니다.
<asp:UpdatePanel UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:LinkButton ID="ContentButton" OnClick="ContentButton_Click" Text="Contents" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ContentButton" />
</Triggers>
<ContentTemplate>
<div id="TOCPanel" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
여기에 C# 파일의 관련 코드가 있습니다.
protected void IndexButton_Click(object sender, EventArgs e)
{
TOCPanel.Controls.Clear();
// _TreeView points to a property that retrieves the TreeView from Session["TreeView"]
TOCPanel.Controls.Add(_TreeView); // This line fails
// TOCPanel.Controls.Add(new TreeView()); // This fails with the same error message too
}
이 어떤 이유
div 대신 을 사용할 때도 같은 오류가 발생합니까? –
같은 일을합니다. 하지만 내가 컨트롤을 변경하면 그것은 단지 충돌하는 것 같습니다. 그래서 초기화에서는 페이지로드 중에 첫 번째 TreeView를 추가합니다. 버튼을 누르면 컨트롤이 변경되고 충돌이 발생합니다. 현재로드 된 버튼을 누르면 충돌이 발생하지 않습니다. –