2013-04-08 60 views
0

我有一個ASP.NET頁面包含一個按鈕,一個AjaxToolKit TabControl和兩個TabPanels。我希望啓用該按鈕,當選項卡#0被選中或禁用時,如果有其他選項卡被選中/激活。控制按鈕的可見性取決於AjaxToolKit上的活動選項卡:TabControl

但是,我甚至沒有得到正確編譯的代碼。

我的嘗試是

<asp:Content ID="Foobar" ContentPlaceHolderID="MainContentPlaceHolder" runat="Server"> 
<script type="text/javascript"> 
    function CanSave(sender,e)) { 
     var tabContainer = window.$get('<%=tcMain.ClientID%>'); 
     if (tabContainer != undefined && tabControl != null) { 
      tabContainer = tabControl.control; 
      document.getElementById('<%=ButtonSave.ClientID %>').disabled = (tabContainer.ActiveTabIndex == 0); 
     } 
    } 
</script> 
    <asp:Button ID="ButtonSave" runat="server" Enabled="false" OnClick="ButtonSave_Click" Text="Save" Width="8.8em" /> 
    <ajaxToolkit:TabContainer runat="server" ID="tcMain" OnActiveTabChanged="CanSave"> 
     <ajaxToolkit:TabPanel ID="tpOne" runat="server" HeaderText="One"> 
     <ContentTemplate> 
     ...      
     </ContentTemplate> 
     <ajaxToolkit:TabPanel ID="tpTwo" runat="server" HeaderText="Two"> 
     <ContentTemplate> 
     ...      
     </ContentTemplate> 
    </ajaxToolkit:TabContainer> 


</asp:Content> 

腳本編寫的東西全部是從互聯網上收集。我不得不承認,我對jscript,ASP.NET等一無所知,但我必須找到一種方法來切換該按鈕的可見性ButtonSave

請給我一些正確方向的提示。提前致謝。

回答

0

這是我的解決方案。訣竅是使用OnClientActiveTabChanged事件。很明顯,不是嗎?

<asp:Content ID="Foobar" ContentPlaceHolderID="MainContentPlaceHolder" runat="Server"> 
<script type="text/javascript"> 
    function CanSave(sender,e)) { 
     var tabContainer = window.$get('<%=tcMain.ClientID%>'); 
     if (tabContainer != undefined && tabControl != null) { 
      tabContainer = tabControl.control; 
      document.getElementById('<%=ButtonSave.ClientID %>').disabled = (tabContainer.get_activeTabIndex() == 0); 
     } 
    } 
</script> 
    <asp:Button ID="ButtonSave" runat="server" Enabled="false" ... /> 
    <ajaxToolkit:TabContainer 
     runat="server" 
     ID="tcMain" 
     OnClientActiveTabChanged="CanSave"> 

...

1

OnActiveTabChanged不是客戶端事件。你將不得不在你的代碼後面編寫代碼以使其工作。請注意,此事件會導致回發並在標籤更改時刷新頁面。

protected void tbcRatingMaster_ActiveTabChanged(object sender, EventArgs e) 
{ 
if (tbcRatingMaster.ActiveTabIndex == 0) //First tab 
{ 
    ButtonSave.Enabled = false; 
} 
} 
+0

嗨。我嘗試過,但事件沒有被解僱。 – alzaimar 2013-04-08 11:43:26

+0

解決了!屬性'AutoPostBack =「True」'丟失。現在它可以工作。謝謝。儘管如此,仍然在尋找客戶端解決方案。 – alzaimar 2013-04-08 12:24:57

+0

如果您只想客戶端控制,請使用jQuery選項卡。禁用該按鈕相當容易。它提供了很多客戶端事件。 – nunespascal 2013-04-08 12:30:51

相關問題