none
Rafraîchissement partiel RRS feed

  • Question

  • Bonjour ;

    Je veux faire du rafraîchissement partiel d'une page contenant un user control qui est construit avec une méthode javascript

    Voici le code de ma page : "page.aspx"

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewCalculette.aspx.cs" Inherits="NewCalculette" %>
    
    <%@ Register Src="~/UserControls/file.ascx" TagName="GrapheCalcul" TagPrefix="graCal" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
     <title>Nouvelle Calculette</title>
    </head>
    <body>
     <form id="form1" runat="server">
     <asp:ScriptManager ID="ScriptManagerCalculette" runat="server" EnableScriptGlobalization="true" >
     <Services>
     <asp:ServiceReference Path="./ATELWebService.asmx" />
     </Services> 
     <Scripts>
     <asp:ScriptReference Path= "~/Scripts/Tools.js" />
     </Scripts> 
     </asp:ScriptManager>
     <div style="width:950px">
     <table width="100%" cellpadding="0" cellspacing="0">
     <tr>
      <!-- Conteneur du composant graphique -->
      <td valign="top" style="width:50%">
       
      <asp:UpdatePanel 
       ID="UpdatePanel2"   
       runat="server"
       EnableViewState="true">
       <ContentTemplate> 
       //CONTENEUR POUR LE GRAPH    
       <div id="contenerGraph" runat="server"></div>
       <asp:Label ID="testLabel" runat="server">Test</asp:Label>
        <hr />    
       </ContentTemplate>
    
       <Triggers>
       <asp:AsyncPostBackTrigger ControlID="bntLoadGraph" EventName="Click" />
       </Triggers>
      </asp:UpdatePanel>
      </td>
      <!-- Conteneur des onglets -->
      <td valign="top" style="width:50%">
      <asp:Button ID="bntLoadGraph" runat="server" Text="Charger" OnClick="GererReCharger"/>
      </td>
     </tr>
     </table>
     </div>
     </form>
    </body>
    </html>
    

     

    Code de mon UserController : "file.ascx"
    <center>
     <script type="text/javascript">
     // Major version of Flash required
     var requiredMajorVersion = 9;
     // Minor version of Flash required
     var requiredMinorVersion = 0;
     // Minor version of Flash required
     var requiredRevision = 28;
     /**
     * 
     **/
     function displayGraph(fileData, width, height) {
    
      try {
      var hasProductInstall = !DetectFlashVer(6, 0, 65);
      var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
    
      if (hasProductInstall && !hasRequestedVersion) {
       var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
       var MMredirectURL = window.location;
       document.title = document.title.slice(0, 47) + " - Flash Player Installation";
       var MMdoctitle = document.title;
       AC_FL_RunContent(
    		 "src", "playerProductInstall",
    		 "FlashVars", "MMredirectURL=" + MMredirectURL + '&MMplayerType=' + MMPlayerType + '&MMdoctitle=' + MMdoctitle + "",
    		 "width", "" + width,
    		 "height", "" + height,
    		 "align", "middle",
    		 "id", "BlackBoxChart",
    		 "quality", "high",
    		 "bgcolor", "#869ca7",
    		 "name", "BlackBoxChart",
    		 "type", "application/x-shockwave-flash",
    		 "pluginspage", "http://www.adobe.com/go/getflashplayer"
    	 );
      } else if (hasRequestedVersion) {
       AC_FL_RunContent(
    			 "src", "BlackBoxChart?chartCodeAddress=charts/" + fileData,
    			 "width", "" + width,
    			 "height", "" + height,
    			 "align", "middle",
    			 "id", "BlackBoxChart",
    			 "quality", "high",
    			 "bgcolor", "#869ca7",
    			 "name", "BlackBoxChart",
    			 "type", "application/x-shockwave-flash",
    			 "pluginspage", "http://www.adobe.com/go/getflashplayer"
    	 );
      } else {
       alert("else");
       var alternateContent = 'Alternate HTML content should be placed here. '
     	  + 'This content requires the Adobe Flash Player. '
     	  + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
       document.write(alternateContent);
      }
      }
      catch (Error) {
      alert(" displayGraph : " + Error);
      }
     } //End displayGraph()
    
     var width = '<%= Width %>',
      height = '<%= Height %>';
     var fileData = '<%= FileData %>'; 
     //Affichage de(s) graphe(s)
     displayGraph(fileData, width, height);
     </script>
    </center>
    

     

    code du gestionnaire Click :

     

    protected void GererReCharger(object sender, EventArgs e)
     {
    
     try
     {
    UserControls_file newGraphe = (UserControls_GraphiquesCalculette)LoadControl("~/UserControls/file.ascx");
      newGraphe.Cdcs = Cdcs;
      newGraphe.Width = 450;
      newGraphe.Height = 400;
      newGraphe.HeightChart = 200;
      newGraphe.HeightLegend = 15;
      newGraphe.HeightZoom = 60;  
      testLabel.Text = FileData;
      //Ajout dans la div
      contenerGraph.Controls.Add(newGraphe);
     }
     catch(Exception exc){
      ///TODO:
     }
    
    }
    
    

     

    Pour le label ça marche très bien.

    Mais quand je sors la div <div id="contenerGraph" runat="server"/> en d'hors de l'UpdatePanel il m'affiche très bien le contenu de la div(Le Graphe)  par contre j'ai plus la notion de rafraîchissement partiel du composant .

    Peut être que on peux pas mettre du javascript dans (UpdatePanel) ?????

    merci de votre aide.

    mardi 5 octobre 2010 11:59

Réponses

  • Bonjour ,

    -------------------------------------------------------------------
    Code qui marche sans rafraichissement partiel :
    -------------------------------------------------------------------
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewCalculette.aspx.cs" Inherits="NewCalculette" %>
    <%@ Register Src="~/UserControls/file.ascx" TagName="GrapheCalcul" TagPrefix="graCal" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
    <title>Nouvelle Calculette</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManagerCalculette" runat="server" EnableScriptGlobalization="true" >
    	<Services><asp:ServiceReference Path="./ATELWebService.asmx" /></Services> 
    	<Scripts><asp:ScriptReference Path= "~/Scripts/Tools.js" /></Scripts> 
    </asp:ScriptManager>
    <span style="white-space:pre">	</span><div style="width:950px">
    <table width="100%" cellpadding="0" cellspacing="0">
    <tr>
    <!-- Conteneur du composant graphique -->
    <td valign="top" style="width:50%"> 
    //CONTENEUR POUR LE GRAPH 
    <div id="contenerGraph" runat="server"></div>
    <asp:Label ID="testLabel" runat="server">Test</asp:Label>
    </td>
    <td valign="top" style="width:50%">
    <asp:Button ID="bntLoadGraph" runat="server" Text="Charger" OnClick="GererReCharger"/>
    </td>
    </tr>
    </table>
    </div>
    </form>
    </body>
    </html>

    --------------------------------------------------------------------------------
    Code qui ne marche pas avec rafraichissement partiel :
    --------------------------------------------------------------------------------

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewCalculette.aspx.cs" Inherits="NewCalculette" %>
    <%@ Register Src="~/UserControls/file.ascx" TagName="GrapheCalcul" TagPrefix="graCal" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head id="Head1" runat="server">
    	 <title>Nouvelle Calculette</title>
    	</head>
    <body>
    	<form id="form1" runat="server">
    	<asp:ScriptManager ID="ScriptManagerCalculette" runat="server" EnableScriptGlobalization="true" >
    		<Services><asp:ServiceReference Path="./ATELWebService.asmx" /></Services> 
    		<Scripts><asp:ScriptReference Path= "~/Scripts/Tools.js" /></Scripts> 
    	</asp:ScriptManager>
    	<div style="width:950px">
    	<table width="100%" cellpadding="0" cellspacing="0">
    	<tr>
    		<!-- Conteneur du composant graphique -->
    		<td valign="top" style="width:50%"> 
    		//CONTENEUR POUR LE GRAPH 
    <asp:UpdatePanel>
    <ContentTemplate> 
    <div id="contenerGraph" runat="server"></div>
    <asp:Label ID="testLabel" runat="server">Test</asp:Label> 
    </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="bntLoadGraph" EventName="Click" />
    </Triggers>
    </asp:UpdatePanel>
    </td>
    <td valign="top" style="width:50%">
    <asp:Button ID="bntLoadGraph" runat="server" Text="Charger" OnClick="GererReCharger"/>
    </td>
    </tr>
    </table>
    </div>
    </form>
    </body>
    </html>
    

    ---------------------------------------------------------------
    Gestionnaire du Click :
    ---------------------------------------------------------------
    protected void GererReCharger(object sender, EventArgs e)
    {
    try
    {
    UserControls_file newGraphe = (UserControls_GraphiquesCalculette)LoadControl("~/UserControls/file.ascx");
    newGraphe.Cdcs = Cdcs;
    newGraphe.Width = 450;
    newGraphe.Height = 400;
    newGraphe.HeightChart = 200;
    newGraphe.HeightLegend = 15;
    newGraphe.HeightZoom = 60; 
    testLabel.Text = FileData;
    //Ajout dans la div
    contenerGraph.Controls.Add(newGraphe);
    }
    catch(Exception exc){
    ///TODO:
    <span style="white-space:pre">	</span>}
    }
    



    Je viens juste de résoudre le problème mais en passant par du javascript et en utilisant des web services (Solution non élégante).

    Merci pour votre réponse.

    Très cordialement
    • Marqué comme réponse Alex Petrescu vendredi 8 octobre 2010 08:02
    jeudi 7 octobre 2010 13:29

Toutes les réponses

  • Bonjour,

     

    Pouvez-vous nous écrire le code qui fonctionne et le code qui ne fonctionne pas ? J’ai du mal à comprendre quelles sont les modifications qui causent le problème énoncé.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    jeudi 7 octobre 2010 09:16
  • Bonjour ,

    -------------------------------------------------------------------
    Code qui marche sans rafraichissement partiel :
    -------------------------------------------------------------------
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewCalculette.aspx.cs" Inherits="NewCalculette" %>
    <%@ Register Src="~/UserControls/file.ascx" TagName="GrapheCalcul" TagPrefix="graCal" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
    <title>Nouvelle Calculette</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManagerCalculette" runat="server" EnableScriptGlobalization="true" >
    	<Services><asp:ServiceReference Path="./ATELWebService.asmx" /></Services> 
    	<Scripts><asp:ScriptReference Path= "~/Scripts/Tools.js" /></Scripts> 
    </asp:ScriptManager>
    <span style="white-space:pre">	</span><div style="width:950px">
    <table width="100%" cellpadding="0" cellspacing="0">
    <tr>
    <!-- Conteneur du composant graphique -->
    <td valign="top" style="width:50%"> 
    //CONTENEUR POUR LE GRAPH 
    <div id="contenerGraph" runat="server"></div>
    <asp:Label ID="testLabel" runat="server">Test</asp:Label>
    </td>
    <td valign="top" style="width:50%">
    <asp:Button ID="bntLoadGraph" runat="server" Text="Charger" OnClick="GererReCharger"/>
    </td>
    </tr>
    </table>
    </div>
    </form>
    </body>
    </html>

    --------------------------------------------------------------------------------
    Code qui ne marche pas avec rafraichissement partiel :
    --------------------------------------------------------------------------------

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewCalculette.aspx.cs" Inherits="NewCalculette" %>
    <%@ Register Src="~/UserControls/file.ascx" TagName="GrapheCalcul" TagPrefix="graCal" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head id="Head1" runat="server">
    	 <title>Nouvelle Calculette</title>
    	</head>
    <body>
    	<form id="form1" runat="server">
    	<asp:ScriptManager ID="ScriptManagerCalculette" runat="server" EnableScriptGlobalization="true" >
    		<Services><asp:ServiceReference Path="./ATELWebService.asmx" /></Services> 
    		<Scripts><asp:ScriptReference Path= "~/Scripts/Tools.js" /></Scripts> 
    	</asp:ScriptManager>
    	<div style="width:950px">
    	<table width="100%" cellpadding="0" cellspacing="0">
    	<tr>
    		<!-- Conteneur du composant graphique -->
    		<td valign="top" style="width:50%"> 
    		//CONTENEUR POUR LE GRAPH 
    <asp:UpdatePanel>
    <ContentTemplate> 
    <div id="contenerGraph" runat="server"></div>
    <asp:Label ID="testLabel" runat="server">Test</asp:Label> 
    </ContentTemplate>
    <Triggers>
    <asp:AsyncPostBackTrigger ControlID="bntLoadGraph" EventName="Click" />
    </Triggers>
    </asp:UpdatePanel>
    </td>
    <td valign="top" style="width:50%">
    <asp:Button ID="bntLoadGraph" runat="server" Text="Charger" OnClick="GererReCharger"/>
    </td>
    </tr>
    </table>
    </div>
    </form>
    </body>
    </html>
    

    ---------------------------------------------------------------
    Gestionnaire du Click :
    ---------------------------------------------------------------
    protected void GererReCharger(object sender, EventArgs e)
    {
    try
    {
    UserControls_file newGraphe = (UserControls_GraphiquesCalculette)LoadControl("~/UserControls/file.ascx");
    newGraphe.Cdcs = Cdcs;
    newGraphe.Width = 450;
    newGraphe.Height = 400;
    newGraphe.HeightChart = 200;
    newGraphe.HeightLegend = 15;
    newGraphe.HeightZoom = 60; 
    testLabel.Text = FileData;
    //Ajout dans la div
    contenerGraph.Controls.Add(newGraphe);
    }
    catch(Exception exc){
    ///TODO:
    <span style="white-space:pre">	</span>}
    }
    



    Je viens juste de résoudre le problème mais en passant par du javascript et en utilisant des web services (Solution non élégante).

    Merci pour votre réponse.

    Très cordialement
    • Marqué comme réponse Alex Petrescu vendredi 8 octobre 2010 08:02
    jeudi 7 octobre 2010 13:29
  • Bonjour,

     

    Merci pour le suivi et pour les informations. Je vais essayer de reproduire votre scenario et je vous tiens au courant si je trouve une autre solution.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    vendredi 8 octobre 2010 08:03