2017-09-13 6 views
0

J'ai un lien hypertexte dans ASPxScheduler VerticalAppointmentTemplate. Je veux accéder à la même chose dans le code d'exécution derrière.Devxpress Contrôle d'accès ASPxScheduler à l'aide de FindControl

Code Mon Aspx est comme ci-dessous:

<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> 

J'ai essayé d'utiliser différentes façons comme

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

également essayé d'utiliser id rendu de la même liaison.

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

S'il vous plaît aidez-moi pour trouver le contrôle. Je dois lier le NavigateUrl à l'exécution.

Répondre

1

Essayez-vous de lier le lien pendant l'événement DataBind du ASPxScheduler? Je suis sûr qu'il doit y avoir un moyen d'obtenir une référence à votre lien en utilisant la méthode FindControl mais vous devrez traverser toute la hiérarchie des contrôles (ASPxScheduler->Views->DayView) pour arriver au contrôle parent contenant votre lien réel (je suppose doit être la référence DayView par rapport à laquelle vous appelez le FindControl).

Cependant, il existe un autre moyen de réaliser ce dont vous avez besoin, que je vous suggère d'étudier. Il suffit de définir le gestionnaire OnInit pour le lien réel lui-même:

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

puis à codebehind vous pouvez définir le NavigateUrl pour votre lien en utilisant le paramètre s:

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

Le gestionnaire OnInit ci-dessus sera appelé autant de fois autant de liens seront affichés.