2017-09-13 44 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處理器將被調用多次將顯示許多鏈接。