2011-05-17 4 views
6

AJAX नियंत्रण टूलकिट TabPanel का उपयोग करते समय मुझे थोड़ा विचित्र बग का सामना करना पड़ा है। मैं तो जैसे पंक्ति में 4 टैब है:अजाक्स टूकिट टैबपनेल अदृश्य टैग बग

[tab1] [Tab2] [Tab3] [tab4]

अब टैब 2 केवल कुछ निश्चित परिस्थितियों में दिखाई देनी चाहिए, और इसलिए उसकी दृश्यता गलत पर सेट है। हालांकि, यह अदृश्य है, अगर मैं टैब 3 पर क्लिक करना चाहता था, तो यह टैब 1 पर स्विच करने से पहले टैब लोड करेगा। इसी प्रकार टैब 4 का चयन टैब 4 लोड करेगा लेकिन फिर तुरंत टैब 3 पर स्विच होगा। सर्वर की ओर से ActiveTabChanged ईवेंट दो बार हिट किया जा रहा है, एक बार टैब के लिए सही ढंग से चुने जाने के बाद, टैब के लिए एक बार भी यह स्विच हो रहा है।

यदि मैं टैब की पंक्ति के अंत में टैब 2 को ले जाता हूं, तो सब कुछ ठीक काम करता है। टूलकिट पर थोड़ा सा पढ़ने के बाद, मुझे लगता है कि यह सक्रिय टैब इंडेक्स के साथ एक त्रुटि है, और जावास्क्रिप्ट इसे कम से कम एक सेटिंग में सेट कर रहा है, लेकिन मुझे यकीन नहीं है कि इसे ठीक करने के बारे में कैसे जाना है।

उत्तर

3

मुझे यकीन नहीं है कि यह एक ही मुद्दा है, लेकिन ऐसा लगता है कि मेरे पास कुछ महीनों के लिए है।

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender 
    'ensure that the Tabs stay invisible that have Visible=False on markup and dont get visible programmatically' 
    Me.TabThatShouldStayInvisible.Visible = False 
    FixTabPanelVisible(TabContainer1) 
End Sub 

Protected Sub FixTabPanelVisible(ByVal tabcontainer As AjaxControlToolkit.TabContainer) 
    For Each tp As AjaxControlToolkit.TabPanel In tabcontainer.Tabs 
     Dim oldVisible As Boolean = CBool(IIf(IsNothing(ViewState(tp.UniqueID + "_Display")), True, ViewState(tp.UniqueID + "_Display"))) 
     If Not tp.Visible Then 
      ViewState(tp.UniqueID + "_Display") = False 
      DisableTab(tabcontainer, tabcontainer.Tabs.IndexOf(tp)) 
     ElseIf tp.Visible AndAlso Not oldVisible Then 
      ViewState(tp.UniqueID + "_Display") = True 
      EnableTab(tabcontainer, tabcontainer.Tabs.IndexOf(tp)) 
     End If 
     tp.Visible = True 
    Next 
    Dim fixScript As New StringBuilder() 
    fixScript.Append("function DisableTab(container, index) {$get(container.get_tabs()[index].get_id() + ""_tab"").style.display = ""none"";}") 
    fixScript.Append("function EnableTab(container, index) {$get(container.get_tabs()[index].get_id() + ""_tab"").style.display = """";}") 
    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "FixScriptReg", fixScript.ToString(), True) 
End Sub 

Protected Sub EnableTab(ByVal container As AjaxControlToolkit.TabContainer, ByVal index As Integer) 
    Dim sFunction As String = "function() {EnableTab($find('" & container.ClientID & "')," & index & ");}" 
    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "EnableTabFun" & index, "Sys.Application.add_load(" & sFunction & ");", True) 
End Sub 

Protected Sub DisableTab(ByVal container As AjaxControlToolkit.TabContainer, ByVal index As Integer) 
    Dim sFunction As String = "function() {DisableTab($find('" & container.ClientID & "')," & index & ");}" 
    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "DisableTabFun" & index, "Sys.Application.add_load(" & sFunction & ");", True) 
End Sub 
:

मैं पूर्वप्रस्तुत से अजाक्स टूलकिट में एक बग को ठीक करने के लिए किया था: यहाँ मेरी समस्या के लिए एक नज़र और समाधान है

संबंधित मुद्दे