2012-03-02 3 views
2

Je me demande s'il existe des conflits/solutions de contournement communs ou connus pour travailler avec jquery et ASP.Net ajax. Plus précisément, il semble y avoir quelques problèmes lors de l'utilisation de la méthode wrapinner de JQuery, puis plus tard, un appel à la méthode $find de .Net.Conflits JQuery et ASP.Net Ajax?

Ceci est une idée générale du balisage que j'utilise. C'est une mise en page assez complexe donc je l'ai réduit pour la plupart. Désolé c'est trop dense. L'erreur se produit dans la fonction resizePage.

EXTÉRIEUR PAGE

<html> 
<head></head> 
<body> 
    <div> 
    <telerik:radsplitter id="rsMain" runat="server" orientation="Vertical" height="100%" 
     width="100%" bordersize="0" panesbordersize="0" resizewithbrowserwindow="true"> 
     <telerik:radpane id="rpCentral" runat="server" scrolling="None"> 
     <div id="wrapper" style="padding: 0 0 0 0; margin: 0 0 0 0;"> 
      <iframe name="left_frame" src="test.aspx" runat="server" id="left_frame" width="100%" 
      frameborder="0" marginheight="0" marginwidth="0" height="100%"></iframe> 
     </div> 
     </telerik:radpane> 
     <telerik:radsplitbar id="rsbRHS" runat="server" collapsemode="Backward"> 
     </telerik:radsplitbar> 
     <telerik:radpane id="rpRHS" runat="server" width="30%" minwidth="50" minheight="50"> 
     <iframe name="right_frame" src="field_description.aspx" width="100%" frameborder="0" 
      marginheight="0" marginwidth="0" height="100%" scrolling="auto"></iframe> 
     </telerik:radpane> 
    </telerik:radsplitter> 
    <script type="text/javascript"> 

     function ResizePage() { 
      var width = widthPCT * jQuery(window).width(); 
      var panel = $find('<%= rpRHS.ClientID %>'); 

      var collapsed = panel._isCollapsed(); 

      $find('<%= rpRHS.ClientID %>').Expand(); 
      $find('<%= rpRHS.ClientID %>').set_width(width); 

      if (collapsed) 
       $find('<%= rpRHS.ClientID %>').Collapse(); 
     }; 

     function AddScrolling() { 
      var body = GetFrameBody(); 


      if (body.length == 0) { 
       setTimeout("AddScrolling()", 500); 
       return; 
      } 

      jQuery(body).wrapInner("<div id='reportwrapper' style='overflow: auto; position: relative;'></div>"); 
      jQuery(body).css("background-color", "red"); 

      ResizePage(); 
     } 

     $.noConflict(); 
     jQuery(document).ready(function() { 
      AddScrolling(); 
     }); 

     jQuery(window).resize(function() { 
      setTimeout(ResizePage, 100); 
     });  
    </script> 
    </div> 
</body> 
</html> 

PAGE INNER

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <telerik:radscriptmanager id="scriptManager" runat="server" /> 
    <div> 
     <div id="inner" style="height: 2000px; width: 2000px"> 
      Some Text 
     </div> 
    </div> 
    </form> 
</body> 
</html> 
+0

Essayez document.getElementById ('<% = rpRHS.ClientID%>') et de voir quelle valeur qui vient avec. – zeroef

+0

Et quand vous regardez la source de la page rendue pouvez-vous voir l'ID de contrôle? – zeroef

+0

@zeroef Le clientID s'avère être juste rpRHS donc cela ne devrait pas créer de problèmes. – mrK

Répondre

0

Vous pouvez mettre jQuery en mode noConflict comme ceci:

<script type="text/javascript" src="other_lib.js"></script> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
    $.noConflict(); 
    jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 
    // Code that uses other library's $ can follow here. 
</script> 

je devais faire la même chose sur une page que j'utilisais Ajax o n.

MISE À JOUR: je remarqué que vous utilisiez des contrôles de Telerik donc je fait quelques recherches et est venu avec ceci:

ASP.NET AJAX $find method failes when used in jQuery's $(document).ready() method.

Cette question/réponse Stackoverflow pourrait vous aider.

+0

Merci pour la réponse rapide. J'ai implémenté ceci et $ find retourne toujours null où jQuery et $ get retournent des objets. – mrK

+0

@mrK avez-vous essayé avec juste l'ajax pour vous assurer qu'il s'agit d'un problème de conflit? – zeroef

+0

si je commente la ligne contenant le .wrapinner, tout fonctionne bien (autre que de ne pas avoir le div dont j'ai besoin) – mrK