2012-08-28 5 views
1

아코디언 창의 콘텐츠 데이터 소스를 게으른로드하려고합니다. 즉, 창을 열면 데이터 소스가 바인딩됩니다. if (source == null) LoadMe(); 로직을 실행하는 데 사용할 수있는 이벤트를 찾을 수 없습니다.아코디언 창의 데이터 소스를 게으른로드 할 수있는 방법이 있습니까?

전 적어도 100 명이이 작업을 수행했음을 알고 있습니다. 어떤 아이디어라도 도움이 될 것입니다. TIA

답변

0

괜찮습니다. 그것과 완전히 행복하지 임, 그러나 이것은 내가 가진 것입니다 :

각 헤더 나는 기본적으로 그 지역의 클릭하고, 전체 영역을 채우기 위해 크기의 링크 버튼이 있습니다

<ajaxToolkit:AccordionPane ID="acpInReview" runat="server"> 
    <Header> 
     <asp:LinkButton runat="server" Width="100%" Height="25" CssClass="SectionLinkButtons" CommandName="LoadInReview">In Review</asp:LinkButton> 
    </Header> 

보시다시피을, 그것에 관련된 명령이 있습니다.

<ajaxToolkit:Accordion runat="server" ID="accMainNav" HeaderCssClass="AccordionSection" 
         CssClass="AccordionMainNav" ContentCssClass="AccordionContent" 
         RequireOpenedPane="False" SelectedIndex="-1" 
         OnItemCommand="accMainNav_OnItemCommand" ClientIDMode="Static"> 
    <Panes> 
     ... 

이 그런 뒤에 코드, 핸들러가 명령을 읽어 들여,이 일이 수행

:

protected void accMainNav_OnItemCommand(object sender, CommandEventArgs e) 
{ 
    switch(e.CommandName) 
    { 
     case "LoadAwaitingControllerApproval": 
      LoadAwaitingControllerApproval(); 
      break; 
     case "LoadInReview": 
      LoadInReview(); 
      break; 
     case "LoadAwaitingFinalization": 
      LoadAwaitingFinalization(); 
      break; 
    } 
} 
부모 아코디언에, 나는 명령이 템플릿이 검출되면 화재 이벤트 핸들러를 설정

또한 updateproel에서 모든 것을 래핑하여 updateprogress 컨트롤을 사용할 수있게했습니다. 그래서 본질적으로 어떤 일이 발생하면 명령을 실행하는 헤더를 클릭하면 링크 버튼이 클릭됩니다. 이 명령은 데이터 소스를 바인드하는 이벤트 핸들러로 라우트됩니다. 업데이트 패널에 있기 때문에 비동기 적으로 발생하며 updateprogress 컨트롤을 사용하여로드 표시기를 표시합니다. 나는 전체 영역을 커버하는 div로 링크 버튼을 보완하고 그 div에 포스트 백을 발생시키는 onclick 이벤트를 제공함으로써 그것을 향상시킬 수있다. 그러나 지금은이 방법이 효과적입니다.

관련 문제