2009-01-15 12 views
1

J'utilise une application Web ASP.NET AJAX (ASP.NET 2.0 et AJAX Toolkit 1.0) qui contient un bouton et 2 UpdatePanels (UpdatePanel_1 et UpdatePanel_2)Masquer/Afficher les contrôles AJAX avec

Le bouton est enregistré avec RegisterAsyncPostBackControl dans l'objet ScriptManager UpdatePanel_1 est en mode de mise à jour "Conditionnel" et contient un TextBox.

UpdatePanel_2 est en mode de mise à jour « toujours » et contient une autre zone de texte

Lorsque le bouton est enfoncé son gestionnaire appelle UpdatePanel_1.Update() qui met à jour la valeur de la zone de texte basée sur une valeur choisie au hasard dans une liste; également la zone de texte de UpdatePanel_2 est mis à jour automatiquement, également sans rafraîchir la page

Sur la base de la valeur d'une variable ViewState booléenne Je voudrais aussi cacher/montrer les UpdatePanels alternativement, mais j'obtiens l'erreur:

" Sys.InvalidOperationException: dans un autre UpdatePanel »

n'a pas pu trouver UpdatePanel avec ID « UpdatePanel_2 »(ou UpdatePanel_1)

Si elle est mise à jour dynamiquement, alors il doit être Comment peut-il être fait sans ajouter de plus. Habillage UpdatePanels?

protected void Page_Load(object sender, EventArgs e) 
{ 
    ScriptManager1.RegisterAsyncPostBackControl(Button1); 


    if (!IsPostBack) 
    { 

     Visibility = true; 
    } 

    UpdatePanel_1.Visible = !Visibility; 
    UpdatePanel_2.Visible = Visibility; 

    Visibility = !Visibility;   
} 


protected void Button1_Click(object sender, EventArgs e) 
{ 
     if (Panel1.Visible) 
       UpdatePanel_1.Update();  
} 

protected bool Visibility 
{ 
    get 
    { 
     return (bool)(ViewState["Visibility"] ?? true); 
    } 
    set 
    { 
     ViewState["Visibility"] = value; 
    } 
} 

Répondre

2

Le problème est que les contrôles invisibles ne sont pas rendus au client. Donc, essayer de les rendre visibles ne fonctionnera pas, car pour le client, ils n'existent pas. Essayez d'utiliser style = "display: none", ou utilisez des classes CSS et des styles différents pour les panneaux visibles et invisibles, plutôt que de définir visible = false;

0

Vous pouvez invisible, ou les contrôles visibles est l'enfant de updatepanel, pas invisible, panneau de mise à jour visible, j'essaie d'utiliser updatemode = conditionnel mais erreur, puis les contrôles visibles I ajouter à updatepanel. Hopy vous aider Merci tout le monde post

Questions connexes