2010-10-06 2 views
2

En fait, j'ai plusieurs panneaux de mise à jour sur la page, qui mettent à jour différentes valeurs sur le serveur mais le problème est que j'ai une classe de texte.Plusieurs pages de mise à jour à la page supprimer JavaScript Datepicker calender de la zone de texte

Mais il existe d'autres panneaux de mise à jour avant cette date TextBox, lorsque je les mets à jour, la première image de calendrier avec le contrôle de date qui est dans updatepanel disparaît. ou il supprime le calendrier qui est à côté de la zone de texte.

txtDate.Attributes.Add("class", "show-week w16em dateformat-d-sl-m-sl-Y"); 

Avant d'utiliser tout son UpdatePanel comme celui-ci

alt text

Après upfdate tout contrôle UpdatePanel son comme celui-ci.

alt text

Mais les contrôles de date qui ne sont pas dans un UpdatePanel sont ok et travailler.

Et dans ces panneaux de mise à jour, j'ai en fait enregistrer des valeurs dans DataTables et enregistrer ces DataTables dans viewState .... pas de changement en HTML.

Répondre

2

Je suppose que le datpicker et sa zone de texte sont placés dans un panneau de mise à jour?

Si vous effectuez un ajax-postback avec UpdatePanels, le serveur renverra html pour tous les UpdatePanels sur la page, et actualisera tout leur contenu, ainsi votre datepicker disparaîtra.

Si vous définissez UpdateMode=Conditional sur les UpdatePanels, seuls les UpdatePanels à l'origine de la publication seront mis à jour.

Une autre option consiste à recréer le datpicker avec ScriptManager.RegisterStartupScript, mais cela peut éventuellement réinitialiser sa valeur (cela dépend de la datepicker).

+0

ok ...mais si ce updatepanel aussi postback ou mise à jour sur le serveur la prochaine fois le même problème JavaScript sera là encore – Azhar

+0

vrai, alors vous devrez recréer le datepicker avec javascript chaque fois que le panneau met à jour, mais comment faire cela dépend exactement le datepicker tu utilises. Je suppose que vous exécutez du code onload, essayez de charger également ce code sur (ajax-) postback. – Willem

+0

ya que je l'ai fait aussi mais ne fonctionne pas ... – Azhar

1

Modifiez-vous l'INNERHTML de la DIV ou la TABLE dans laquelle TextBox est présent parce que si vous supprimez le contrôle de calendrier après que DIV ou TABLE est en cours de mise à jour.

+0

non .... dans ces panneaux, je sauvegarde réellement des valeurs dans DataTables et je les sauvegarde dans viewState .... pas de changement en HTML. – Azhar

+0

alors vous devez relier le contrôle de calendrier après chaque requête ajax comme suggéré y34h. Re-lier le calendrier; Sys.Application.add_init (function() { $ create (AjaxControlToolkit.CalendarBehavior, {"button": $ get ("<% = PopupButtonID%>"), "cssClass": "cal_Theme1", "format": " MM/jj/aaaa "," id ":" <% = CalenderEntenderID%> "," popupPosition ": 1}, null, null, $ get (" <% = TargerControlId%> ")) }); – KhanZeeshan

1

quelle que soit la méthode que vous utilisez pour fixer le datepicker, vous devez appeler à nouveau après les mises à jour UpdatePanel

vous pouvez le faire sur le côté serveur avec this:

// at some point of the method that updates the panel 
ScriptManager.RegisterStartupScript(
    this, typeof(object), "someUniqueKey", "theScript();", true); 

ou côté client avec ceci:

// <body onload='...'> or in the <head> 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
    function() { theScript() }); 
Questions connexes