begin process at 2012 05 27 15:33:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Web 2.0

 > 

Ajax

 > 

Callback dans dynamic Usercontrol


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Callback dans dynamic Usercontrol

mardi 13 novembre 2007 à 11:58:38 | Callback dans dynamic Usercontrol

angelflo18

Bonjour à tous,

Je suis confronté à un probleme dans mon dev à savoir :
J'essaye de me former au dev d'un site .NET avec ajax (et callback) et j'ai une page qui incorpore un menu qui declenche l'initialisation d'un usercontrol selon le lien dans un placeholder qui se trouve dans un updatepanel :

fichier default.aspx
[CODE]<asp:Menu ID="Menu1" runat="server" OnMenuItemClick="Menu1_MenuItemClick">
                            <Items>
                                    <asp:MenuItem Text="Mon Profil"></asp:MenuItem>
                                    <asp:MenuItem Text="Ma Selection"></asp:MenuItem>
                            </Items>
                        </asp:Menu>
           
            <asp:UpdatePanel ID="UPContent" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <div id="content">
                        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
                    </div>
                 </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="Menu1" />
                    </Triggers>
            </asp:UpdatePanel>[/CODE]

fichier default.aspx.cs
[CODE]public partial class default: System.Web.UI.Page
{
    private const string BASE_PATH = "~/UserControl/";

    private string LastLoadedControl
    {
        get
        {
            return ViewState["LastLoaded"] as string;
        }
        set
        {
            ViewState["LastLoaded"] = value;
        }
    }

    private void LoadUserControl()
    {
        string controlPath = LastLoadedControl;

        if (!string.IsNullOrEmpty(controlPath))
        {
            PlaceHolder1.Controls.Clear();
            UserControl uc = (UserControl)LoadControl(controlPath);
            uc.ID = "profil";
            PlaceHolder1.Controls.Add(uc);
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        LoadUserControl();
    }

    protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
    {
        MenuItem menu = e.Item;

        string controlPath = string.Empty;

        switch (menu.Text)
        {
            case "Mon Profil":
                controlPath = BASE_PATH + "profil.ascx";
                break;
            case "Recherche":
                controlPath = BASE_PATH + "recherche.ascx";
                break;
            default:
                controlPath = BASE_PATH + "recherche.ascx";
                break;
        }

        LastLoadedControl = controlPath;
        LoadUserControl();
    }
}
[/CODE]
=> Toute cette partie semble fonctionner, je n'ai pas d'erreur et j'ai bien chargement du usercontrol correspondant sans rechargement de la page complete.

Par contre mon profil.ascx (qui fonctionnait parfaitement lorsqu'il etait une page aspx et non usercontrol) n'arrive plus a effectuer de callback (j'ai un champs code postal de type textbox qui declenche un callback pour créer une dropdownlist des villes correspondantes)

fichier profil.ascx
[CODE]<%@ Control Language="C#" AutoEventWireup="true" CodeFile="profil.ascx.cs" Inherits="UserControl_login" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>


   <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <table>
                <tr>
                    <td>
                        Nom :</td>
                    <td>
                        <asp:TextBox ID="txnom" runat="server" CssClass="unwatermarked"></asp:TextBox><br />
                        <cc1:TextBoxWatermarkExtender ID="marknom" TargetControlID="txnom" WatermarkText="Votre Nom" WatermarkCssClass="watermarked" runat="server">
                        </cc1:TextBoxWatermarkExtender>
                   </td>
                </tr>
                <tr>
                    <td>
                        Prénom :</td>
                    <td>
                        <asp:TextBox ID="txprenom" runat="server" CssClass="unwatermarked"></asp:TextBox><br />
                        <cc1:TextBoxWatermarkExtender ID="markprenom" TargetControlID="txprenom" WatermarkText="Votre Prénom" WatermarkCssClass="watermarked" runat="server">
                        </cc1:TextBoxWatermarkExtender>
                    </td>
                </tr>
               

                <tr>
                    <td>
                        Adresse :</td>
                    <td><asp:TextBox ID="txadresse" runat="server" CssClass="unwatermarked" Width="250"></asp:TextBox></td>
                </tr>
                <tr>
                    <td>
                        Code postal :</td>
                    <td><asp:TextBox ID="txcp" runat="server" CssClass="unwatermarked"></asp:TextBox></td>
                </tr>
               
                <tr><td colspan="2">
                <asp:Panel ID="Panel1" CssClass="hideville" runat="server">
                    <asp:Label ID="lblville" runat="server" Text="Ville :"></asp:Label>
                    <asp:DropDownList ID="DDLVille" runat="server">
                    </asp:DropDownList>
                   
                </asp:Panel>
                <span id="myDiv" class="spanville" runat="server"></span>
                </td></tr>
               
                <tr>
                    <td>
                        Téléphone :</td>
                    <td><asp:TextBox ID="txtel" runat="server" CssClass="unwatermarked"></asp:TextBox></td>
                </tr>
                <tr>
                    <td>
                        Mobile :</td>
                    <td><asp:TextBox ID="txmobile" runat="server" CssClass="unwatermarked"></asp:TextBox></td>
                </tr>
        <tr><td colspan="2" align="center">
                        <asp:Button ID="btnsubmit" OnClick="btnsubmit_Click" runat="server" Text="Valider" /><br />
                    <asp:Label ID="lblConfirmMsg" runat="server" Text=""></asp:Label>
                    </td>
                </tr>
            </table>
        </ContentTemplate>
    </asp:UpdatePanel>[/CODE]

profil.ascx.cs
[CODE]public partial class UserControl_inscription : System.Web.UI.UserControl, System.Web.UI.ICallbackEventHandler
{
    protected String returnValue;

    // A Implementer plus tard pour la gestion de l'updatepanel au sein du usercontrol ?
    //public UpdatePanelUpdateMode UpdateMode
    //{
    //    get { return this.UpdatePanel1.UpdateMode; }
    //    set { this.UpdatePanel1.UpdateMode = value; }
    //}

    //public void Update()
    //{
    //    this.UpdatePanel1.Update();
    //}


    internal static string ConnectionString
    {
        get { return ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString(); }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

        Page.Header.Title = "Edition du Profil";

        txcp.Attributes.Add("onChange", "GetVilleByZip();return false;");
        ddlpays.Attributes.Add("onchange", "ChangePays();");

        // NE semble pas fonctionner dans inclusion directe au sein de la page default.aspx
        //HtmlGenericControl include = new HtmlGenericControl("script");
        //include.Attributes.Add("language", "JavaScript");
        //include.Attributes.Add("type", "text/javascript");
        //include.Attributes.Add("src", "profil.js");

        //Parent.Page.Header.Controls.Add(include);

    // Gestion duCallback

        string sbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");

        string cbScript = String.Empty;
       
        if (!Page.ClientScript.IsClientScriptBlockRegistered("CallServer"))
        {
        cbScript = @" function CallServer(arg,context) { " + sbReference + "} window.setTimeout(CallServer,100); ";
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", cbScript, true);
        }

            if (Request.IsAuthenticated)
            {
                MembershipUser u = Membership.GetUser();
                ProfileCommon pc = Profile.GetProfile(Page.User.Identity.Name);
                txnom.Text = pc.nom;
                txprenom.Text = pc.prenom;
                txtel.Text = pc.tel;
                txmobile.Text = pc.mobile;
                txadresse.Text = pc.adr;
                txcp.Text = pc.cp;
                txville.Text = pc.ville;
                ddlpays.SelectedValue = pc.pays;
                if (pc.pays == "FR")
                {
                    txville.Enabled = false;
                }
                btnsubmit.Text = "Mettre à Jour";
            }

    }


    private string GetVilleByZip(string ZipCode)
    {
        // Datareader et rendu du control dropdownlist

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        DDLVille.RenderControl(htw);
        htw.Flush();
        return sw.ToString();
    }

    protected void btnsubmit_Click(object sender, EventArgs e)
    {
        try
        {
            // Traitement des infos de mise à jour du profil
        }
        catch (Exception ex)
        {
            lblConfirmMsg.Text = ex.Message;
        }
    }


    #region ICallbackEventHandler Members

    public string GetCallbackResult()
    {
        return GetVilleByZip(returnValue);
    }

    public void RaiseCallbackEvent(string eventArgument)
    {
        returnValue = eventArgument;
    }

    #endregion
}[/CODE]

=> Et là impossible d'avoir un callback, Firebug me retourne CallServer is not defined ...
Si quelqu'un a une idée pour me sortir de là, si vous avez également des idées plus interesantes pour construire tout cela ...

Merci d'avance


Cette discussion est classée dans : text, page, code, string, usercontrol


Répondre à ce message

Sujets en rapport avec ce message

[.net] usercontrol et code behind problème [ par jesusonline ] Bonjour j'ai crée un usercontrol que j'ai inseré dans une page aspx, dans cet usercontrole j'ai des fonctions que j'aimerais bien exploité dans le cod Pb de UserControl [ par blueangel ] je suis entrain de créer un datagrid en code behind dans un UserControl.dans l'evenement Page_load du user Control j'ai ajouté cette ligne de code  pu Conflit entre 2 Onclick [ par cirtey ] Bonjour;Voici le problème:J'ai sur mon master page un imagebutton qui permet de changer la redirection vers une autre page lorsqu'il est cliqué (événe popup en utilisant la methode RegisterStartupScript [ par za3ima41 ] Bonsoir j'utilise le code suivant pour afficher une page popup (.aspx), le problème c'est que le système n'accepte pas cette suntaxe en disant : 'Sy IF switch et déclaration de variable csharp asp.net [ par phpdos ] Dans ma "[B]private void[/B]" où je charge mes labels et dans mon "[B]termLabel[/B]", j'affiche les numéros de boîte Voici : [code=cs]mTermLabel.Tex System.Threading.ThreadAbortException [ par thiosyiasar ] Bonjour,J'utilise une requete http en javascript, pour appeler une page aspx qui me retourne une url.Cela fonctionne bien mais visual studio affiche u Modifier son code personnel [ par cedriccopy ] Bonjour, J'ai une page identification et je veux que l'identifiant puisse changer de code personnel comme bon lui semble. Pour ce faire, j'ai créer u ImageButton difference d'intrepretation des navigateurs [ par aylandar2009 ] salut à tt le monde... bon voila je pose une question sur ASP.NET,  une question sur laquelle je bloque pendant pas mal de temps (2 ou 3 semaines)...p User Control dynamique et events [ par naej94 ] Bonjour à tous, Je tiens a préciser que je ne maitrise pas trop .NET pour le web. Je cherches à ajouter dynamiquement des controles à une pages, et Erreur Chargement Data ModalPopup Extender [ par AirT0n ] Hello, J'ai une Gridview avec un bouton lien "Editer" qui ouvre une fenetre popup avec les données de la ligne à modifier. Dans mon code c#, l'événem


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales