2013-04-29 71 views
2

我有3個ascx控件加載在一個aspx文件中作爲選項卡式的方式。我在第一個ascx控件中有一個按鈕。如果按鈕被點擊,那麼我必須移動到下一個選項卡。如何移到下一個選項卡?如何使用Ajax控件工具包TabContainer切換標籤頁?

+1

您使用的是什麼控件? MutliView? Telerik的? Ajax工具包?定製? – MatthewMartin 2013-04-29 21:48:17

+0

使用AJAX工具包 – Gansun 2013-04-29 21:51:41

回答

0

我假設你或你的組織編寫了3個ascx控件?

您將不得不提醒選項卡式控件(頁面?)的父級控件(ascx控件)的子控件請求選項卡控件進入另一個選項卡。

我知道如何做到這一點最簡單,最不耦合的方式是使用自定義事件。步驟如下:

  1. 在ascx控件中實現一個事件,該事件在單擊ascx控件中的按鈕時引發。 this Q+A中有一個例子。

    由於您使用的是Visual Basic,因此第四步的語法將有所不同。我將在下面的步驟中對此進行描述。

  2. 在頁面中爲該事件設置處理程序。 (這是步驟4中我連接於該示例。)

    到該處理程序與該用戶控件相關聯的最簡單方法是在標記:

    <uc:MyUserControl TabChangeRequested="MyUserControl_TabChangeRequested" 
        runat="server" id="userControl1" /> 
    

    本示例假定MyUserControl_TabChangeRequested是公用或被保護你的頁面的方法。

    如果這不起作用,您可以編程方式進行關聯。如何做到這一點取決於用戶控件對頁面本身是否可見,或者是選項卡控件的子項。如果用戶控制網頁的孩子,你可以使用此代碼(在Page_Load中):

    AddHandler userControl1.TabChangeRequested, AddressOf MyUserControl_TabChangeRequested 
    

    這是一個非常不同的語法到C#的,它可以使實例混亂。

    如果用戶控件是標籤控件的孩子,而不是在頁面控制被宣佈時,需要首先從特定標籤的控制集合中獲取到用戶控件的引用:

    Dim uc as MyUserControl = TabControl1.Tabs(0).FindControl("userControl1") 
        AddHandler uc.TabChangeRequested, AddressOf MyUserControl_TabChangeRequested 
    

    根據選項卡控件及其寫入方式,您可能需要查看選項卡控件的自己的子項而不是選項卡的子項。前面的例子中的第一行是這樣的:

    Dim uc as MyUserControl = TabControl1.FindControl("userControl1") 
    
  3. 在您的處理程序,做任何你需要做的更改到下一個標籤。

+0

謝謝Ann。我真的很想將第四點轉換成VB.net。你能否請幫忙 – Gansun 2013-04-29 22:39:41

+0

@Gansun我會盡力的。語法完全不同,你是對的。 – 2013-04-30 03:50:59

+0

@Gansun我已經擴展了我的答案,包括更多的例子和解釋。希望這可以幫助! – 2013-04-30 04:04:40

相關問題