2011-02-10 2 views
1

나는 두 UpdatePanels있는 페이지를 가지고 : 첫 번째 패널에서의 ListView에서 포스트 백 컨트롤이 있습니다다른 UpdatePanel에서 다시 게시 한 후 UpdatePanel을 표시하고 새로 고칩니다.

<asp:UpdatePanel id="ListUpdatePanel" runat="server" UpdateMode="conditional"> 
<ContentTemplate> 
    <asp:ListView ... </asp:ListView> 
</ContentTemplate> 
</asp:UpdatePanel> 

<asp:UpdatePanel id="DetailUpdatePanel" runat="server" UpdateMode="conditional"> 
.. 
</asp:UpdatePanel> 

. 일어날 일은 페이지가 ListView에서 이벤트를 캡처 할 때 페이지가 모드를 전환해야 할 때입니다. 코드는 그 시점에서 두 번째 패널을 표시하고 업데이트해야합니다. 명령 이벤트가 PageMode이 후, 편집 설정하는 속성 발생합니다 : 'ID와 UpdatePanel을 찾을 수 없습니다 : ScriptResource.axd : 868Uncaught Sys.InvalidOperationException

protected override void OnPreRender(EventArgs e) 
{ 
    ListPanel.Visible = PageMode == PageModes.List; 
    EditPanel.Visible = PageMode == PageModes.Edit; 
    if (PageMode == PageModes.Edit) 
    { 
     EditUpdatePanel.Update(); 
    } 
    else 
    { 
     ListUpdatePanel.Update(); 
    } 
    base.OnPreRender(e); 
} 

을하지만 작동하지 않습니다, 나는이 오류 ctl00_ctl11_DetailUpdatePanel '. 동적으로 업데이트되는 경우 다른 UpdatePanel 안에 있어야합니다.

패널이 자동으로 설정된 경우이를 예상합니다. 나는 여기에 뭔가가있는 것 같아. 포스트 백이 UpdatePanel 내부에서 시작된 경우, 조건부로 설정되어 있더라도 해당 컨트롤이 어떻게 든 해당 UpdatePanel에 연결되어 있습니까? 주어진 UpdatePanel을 "벗어나"전체 포스트 백을 수행하지 않도록 asp.net을 얻는 방법이 있습니까?

이 둘은 같은 UpdatePanel에 둘 다 사용되었지만 세부적인 패널에서 특정 상황에서 제출을 차단하는 논리를 구현해야하기 때문에 구분해야합니다. 그들은 동일한 UpdatePanel에 있습니다. 나는 둘 다 항상 렌더링하고 CSS를 사용하여 사용자가 주어진 모드에서 작동하지 않게하려는 경우 작동한다고 생각합니다. 또는 둘 다 외부 UpdatePanel에 둘 수 있습니다. 하지만 대역폭 낭비가 많은 것처럼 보입니다. 원하는대로 작동하도록하는 방법이 있기를 바랍니다.

답변

0

준 ASP.NET가 업데이트 패널로부터 요청을 수신

+0

수동 제어가 똑같이 작동하지 않아야합니까? 나는 같은 오류가 발생할 것이라고 생각한다. –

+0

updatepanle은 부분 렌더링 만하기 때문에 다른 panle을 통해 요청을 보내지 않을 수도 있습니다. – XtremeBytes

0

, 그 응답은 해당 Panel의 컨텐츠 (플러스 뷰 상태를 포함하는 다른 패널에 Asynctrigger로 게시 발생 제 패널의 버튼 이벤트 유효성 검사 데이터). MSDN에 Partial-Page Rendering Overview에서 것은 :

An asynchronous postback behaves much like a synchronous postback. All the server page life-cycle events occur, and view state and form data are preserved. However, in the rendering phase, only the contents of the UpdatePanel control are sent to the browser. The rest of the page remains unchanged.

(나는 또한 방화범, 피들러, 또는 다른 유사한 도구의 요청과 응답 자신을 살펴 복용하는 것이 좋습니다.)

을 업데이트 패널을 사용하기 위해 최선을 다하고있는 경우 (jQuery 또는 다른 클라이언트 측 라이브러리가 아니라) 목록 및 세부 정보를 단일 패널에 넣어야합니다.

+0

분명히 오류 메시지를 읽는 데 문제가 있습니다 ... 대답은 항상있었습니다 : ... 다른 UpdatePanel 안에 있어야합니다.. 나는 UpdatePanels를 사용하기로 약속했다고 말하지 않을 것이고 가능할 때마다 그것들을 피할 것이지만, 적절한 상황에 맞는 도구 일 것입니다. 그래도 이미 일부 유효성 검사 및 시각적 요소에 대해 jQuery를 사용하고 있지만 양식을 렌더링하는 논리는 매우 복잡하며 클라이언트에서 UpdatePanel을 피하기 위해 객체 모델을 복제하는 데 관심이 없습니다! –

관련 문제