2017-09-13 9 views
0

ASPxScheduler VerticalAppointmentTemplate에 하이퍼 링크가 있습니다. 런타임 코드에서 동일한 코드에 액세스하려고합니다.FindControl을 사용하는 Devxpress ASPxScheduler 액세스 제어

내 영문 코드는 다음과 같습니다 :

<dxwschs:ASPxScheduler ID="CalendarView" runat="server" Width="100%" ActiveViewType="Day"> 
    <ResourceNavigator EnableIncreaseDecrease="false" /> 
    <Views> 
     <DayView ResourcesPerPage="1"> 
      <WorkTime Start="08:00:00" End="17:00:00" /> 
      <Templates> 
       <VerticalAppointmentTemplate> 
        <asp:HyperLink ID="CalendarViewLink" runat="server" Text="View"></asp:HyperLink> 
       </VerticalAppointmentTemplate> 
      </Templates> 
     </DayView> 
    </Views> 
    <OptionsBehavior ShowViewSelector="false" /> 
    <Storage EnableReminders="false" /> 
</dxwschs:ASPxScheduler> 

나는 시도

ASPxHyperLink calendarViewLink = (ASPxHyperLink)CalendarView.FindControl("CalendarViewLink");//Method 1 
ASPxHyperLink calendarViewLink = (ASPxHyperLink)Page.FindControl("CalendarViewLink");//Method 2 
ASPxHyperLink calendarViewLink = (ASPxHyperLink)updatepanelid1.FindControl("CalendarViewLink");//Method 3 

도 같은 링크의 렌더링 ID를 사용하여 시도와 같은 다양한 방법을 사용하여.

ASPxHyperLink calendarViewLink = (ASPxHyperLink)CalendarView.FindControl("ctl00_ContentPlaceHolder1_ContentControl_CalendarView_aptsBlock_AptTemplateContainer700_CalendarViewLink"); 

제발 나를 도와주세요. NavigateUrl을 런타임에 바인딩해야합니다.

답변

1

이벤트 (ASPxScheduler) 중에 링크를 바인딩 하시겠습니까?

FindControl 메서드를 사용하여 링크에 대한 참조를 가져올 수 있어야하지만 실제 링크가 포함 된 상위 컨트롤로 이동하려면 컨트롤의 전체 계층 구조 (ASPxScheduler->Views->DayView)를 트래버스해야합니다. FindControl이라고하는 DayView 참조).

그러나 내가 조사 할 것을 제안하는 필요한 것을 달성하는 또 다른 방법이 있습니다.

<asp:HyperLink ID="CalendarViewLink" runat="server" OnInit="OnViewLinkInit" Text="View" /> 

다음 코드 숨김에서 당신이 s 매개 변수를 사용하여 링크에 대한 NavigateUrl을 설정할 수 있습니다 : 그냥 실제 링크 자체에 대한 OnInit 핸들러를 정의

protected void OnViewLinkInit(object sender, EventArgs e) 
{ 
    HyperLink link = (HyperLink)sender; 
    link.NavigateUrl = "url"; 
} 

위하는 OnInit 처리기가 여러 번 호출됩니다 많은 링크가 표시됩니다.