2010-09-14 3 views
2

J'ai un bouton stylisé avec js et css et son intérieur à un panneau de mise à jour chaque fois que je clique sur le bouton (faire de la publication) il perd son style?Ajax mise à jour panneaux et styles

assez sûr que c'est un problème facile ici, une idée?

<html xmlns="http://www.w3.org/1999/xhtml"> 

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 

</div> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Button ID="Button1" runat="server" class="art-button" Text="Button" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 
</form> 

function artButtonsSetupJsHover(className) { 
var tags = ["input", "a", "button"]; 
for (var j = 0; j < tags.length; j++){ 
    var buttons = xGetElementsByClassName(className, document, tags[j]); 
    for (var i = 0; i < buttons.length; i++) { 
     var button = buttons[i]; 
     if (!button.tagName || !button.parentNode) return; 
     if (!artHasClass(button.parentNode, 'art-button-wrapper')) { 
      if (!artHasClass(button, 'art-button')) button.className += ' art-button'; 
      var wrapper = document.createElement('span'); 
      wrapper.className = "art-button-wrapper"; 
      if (artHasClass(button, 'active')) wrapper.className += ' active'; 
      var spanL = document.createElement('span'); 
      spanL.className = "l"; 
      spanL.innerHTML = " "; 
      wrapper.appendChild(spanL); 
      var spanR = document.createElement('span'); 
      spanR.className = "r"; 
      spanR.innerHTML = " "; 
      wrapper.appendChild(spanR); 
      button.parentNode.insertBefore(wrapper, button); 
      wrapper.appendChild(button); 
     } 
     artEventHelper.bind(button, 'mouseover', function(e) { 
      e = e || window.event; 
      wrapper = (e.target || e.srcElement).parentNode; 
      wrapper.className += " hover"; 
     }); 
     artEventHelper.bind(button, 'mouseout', function(e) { 
      e = e || window.event; 
      button = e.target || e.srcElement; 
      wrapper = button.parentNode; 
      wrapper.className = wrapper.className.replace(/hover/, ""); 
      if (!artHasClass(button, 'active')) wrapper.className = wrapper.className.replace(/active/, ""); 
     }); 
     artEventHelper.bind(button, 'mousedown', function(e) { 
      e = e || window.event; 
      button = e.target || e.srcElement; 
      wrapper = button.parentNode; 
      if (!artHasClass(button, 'active')) wrapper.className += " active"; 
     }); 
     artEventHelper.bind(button, 'mouseup', function(e) { 
      e = e || window.event; 
      button = e.target || e.srcElement; 
      wrapper = button.parentNode; 
      if (!artHasClass(button, 'active')) wrapper.className = wrapper.className.replace(/active/, ""); 
     }); 
    } 
} 

}

artLoadEvent.add (function() {artButtonsSetupJsHover ("art-button"); });

Répondre

2

Vous définissez probablement le style dans js dans l'événement onload, mais cet événement est uniquement déclenché une fois, puis dans chaque publication, le panneau de mise à jour ne le traverse pas. Vous devez attacher à l'événement pageloaded PageRequestManager comme ceci:

Après la déclaration ScriptManager vous écrivez ce code et le script s'exécutera chaque fois que vous faites une publication interne.

<script type="text/jscript"> 
<!-- 
var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_pageLoaded(pageLoaded); 

function pageLoaded(sender, args) { 
    document.getElementById("Button1").style.fontWeight = "bold"; 
} 
--> 
</script> 

Ou directement à partir Sys.Application.add_load:

<script type="text/jscript"> 
<!-- 
Sys.Application.add_load(
    function pageLoaded(sender, args) { 
     document.getElementById("Button1").style.fontWeight = "bold"; 
    }); 
--> 
</script> 
+0

comment i au lieu de Sys.Application.add_load (code) je fais Sys.Application.add_load (jsfile)? – Stacker

+0

Vous devez enregistrer le script dans le gestionnaire de scripts et appeler la méthode dans add_load – jmservera

1

Il y a des cas que je peux penser

  1. Vous changez le style sur le code derrière.
  2. Vous modifiez le style avec un script, donc après la mise à jour, vous n'avez plus exécuté le script.
  3. Vous modifiez la potion DOM de votre bouton afin que le style ne fonctionne plus pour cette position.

.Si vous nous donnez le code peut-être que nous pouvons voir quel est le problème.

+0

code ajouté. plz vérifier – Stacker

+0

@Stacker était les 2 options, une autre réponse dans mon absent. – Aristos

1

Si vous définissez des styles avec js, vous devrez peut-être enregistrer ce js avec le ScriptManager sur la page. De cette façon, le script sera chargé sur les publications partielles de page.

Questions connexes