2017-09-13 43 views
0

ASPxScheduler VerticalAppointmentTemplate中有一个超链接。我想在后面的运行时代码中访问相同的代码。使用FindControl Devxpress ASPxScheduler访问控制

我的aspx代码如下:

<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

您是否试图在ASPxSchedulerDataBind事件期间绑定链接?

我相信一定有办法使用FindControl方法来获得你的链接的引用,但是你将不得不遍历控件的整个层次(ASPxScheduler->Views->DayView)来获取到包含实际的链接父控件(我猜必须是DayView参考文献,您可以将其称为FindControl)。

但是,还有另一种方法可以实现您所需要的,我建议您进行调查。只要定义OnInit处理程序的实际链接本身:

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

然后在代码隐藏,你可以使用s参数设置NavigateUrl为你的链接:

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

以上的OnInit处理器将被调用多次将显示许多链接。