dropdownlist ne réinitialise pas le rechargement de la page
Hey,...question très simple
J'ai l'habitude d'écrire en php, mais arriver à la programmation avec ASP.NET 3.0 contexte et ne peut pas comprendre comment résoudre ce problème.
J'ai un DropdownList et si j'ai choisi une certaine valeur,...mon code derrière un tas de trucs et des sorties de données......
Maintenant,...si je recharge la page (ie. appuyez sur la touche F5 ou le peu de recharger chose sur le navigateur)....toutes mes données réinitialise comme si mon selectedIndex est 0....mais le réel indiquant la Valeur est le précédent que j'ai sélectionné!...j'ai essayer de réinitialiser l'index dans mon code derrière dans la "si ispostback = false" déclaration...mais rien ne fonctionne......c'est comme si la Valeur est mise en cache et rien que je puisse faire des changements...
...toute aide serait appréciée 🙂
(plus d'explications: ....si l'impression à l'écran un mydropdownlist.selectedIndex de mon chargement de la Page Sous...Il sera de retour une 0....cependant l'index sélectionné sur l'écran est clairement pas le 0....Je comprends POURQUOI ce qui se passe...j'ai juste besoin de l'arrêter....ou au moins avoir un moyen de détermination de l'indice dans l'état d'affichage...)
Andrew
OriginalL'auteur Andrew | 2009-03-22
Vous devez vous connecter pour publier un commentaire.
Ce comportement est normal pour les champs de formulaire. Les navigateurs généralement essayez de vous rappeler le contenu des champs de texte, les états de cases à cocher et les éléments sélectionnés dans les listes déroulantes sur le cours des événements comme le rechargement de la page et à l'arrière/vers l'avant.
Pour cette raison, vous ne devriez pas supposer au cours de script d'initialisation que les valeurs des champs du formulaire match le contenu que vous avez servi dans le code HTML. Le script renifler leurs valeurs actuelles et l'ensemble de ses variables et les DOM état jusqu'en conséquence, lorsque le chargement de la page.
Si vous voulez vraiment vous débarrasser de l'utilisateur champ de formulaire changements sur reload/navigation, appel forme.reset() dans le script d'initialisation pour retourner à la page HTML de l'état. Mais cela peut être très peu convivial, dans des circonstances normales.
retenté = récupérer
À Partir De JavaScript. Si vous accédez à SelectedIndex de code-behind, vous sont en train de changer le code HTML avant qu'il soit autant que le navigateur; vous n'avez aucune entrée dans ce que le navigateur ne se après avoir la HTML.
oh, merci, bon à savoir...si vous n'avez pas l'esprit de me demander comment je fais ceci: "le script renifler leurs valeurs actuelles et l'ensemble de ses variables et les DOM état jusqu'en conséquence, lorsque le chargement de la page."
Eh bien, tout simplement que si vous avez des JavaScript côté client, des choses qui ont de l'état, il ne devrait pas supposer que l'état initial est ce qui vous a servi pour la via HTML. Si vous n'êtes pas à l'aide d'un script côté client, vous n'avez pas à vous inquiéter à ce sujet.
OriginalL'auteur bobince
Cela ressemble lorsque vous appuyez sur la touche f5 vous n'êtes PAS en train d'écrire un nouveau rechargement de la page. Vous dites que lorsque vous sélectionnez quelque chose à partir de votre dropdownlist que vous faire un tas de code derrière les choses. Bien que l'action EST une publication. Donc appuyant sur f5 APRÈS que l'action ne serait pas considéré comme un nouvel appel à la page de la de la si (IsPostBack == false) échoue parce qu'il est un postback.
Votre première action qui ont provoqué une publication afin de frapper f5 après cela, sera une publication.
On dirait que vous avez un peu de viewstate questions ainsi depuis vos autres commandes sont en cours de réinitialisation. Bien que si vous faites de la peau /des spectacles avec le script côté client, il ne sera pas persisté à travers le viewstate, de toute façon.
Si vous à la page vient de faire une publication, et que vous appuyez sur le bouton actualiser, il SERA une publication. Si vous venez d'avoir un régulier de chargement de la page et fait un refresh elle ne serait pas. Veuillez lire ce que ma réponse était que je pensais que c'était assez clair. Et oui c'est vieux...
N'importe quand j'ai cliquer sur "actualiser" sur mon navigateur (n'a pas d'importance si je viens de 27 publications à partir d'autres contrôles ou pas), une action actualiser JAMAIS inscrit comme une publication pour moi. Pouvez-vous poster un exemple de cas où appuyant sur l'actualisation ne vous inscrire qu'une publication pour vous? Merci!
peut-être poser une question... je n'ai vraiment pas envie de poursuivre ce depuis que je sais comment cela fonctionne, mais quelqu'un peut vous aider à comprendre.
êtes-vous certain que c'est la façon dont il fonctionne, vous pouvez vérifier à 100% dès maintenant qu'une actualisation est, sans équivoque, une publication si fait après une publication? Parce que j'ai rencontré un problème similaire mentionné dans l'OP et je peux vous dire qu'après l'exécution de choses si le débogueur pour une heure, je n'ai jamais été en mesure de voir un "refresh" reconnue comme la publication, peu importe ce que je faisais sur la page.
OriginalL'auteur Kelsey
Essayer la désactivation de veiwstate sur la case à cocher si vous n'en avez pas besoin.
Oui, c'est prévu. Vous avez pour repeupler votre liste à chaque fois.
ay,...mais l'implique une autre requête de base de données dans mon cas particulier,..mais c'est une bonne option pour savoir, merci.
OriginalL'auteur OJ.
Avez-vous essayer de vider le cache de votre navigateur? La plupart des navigateurs prennent en charge Contrôle+F5 comme un dur à rafraîchir qui va vider le cache de la page courante et recharger la page entière à partir du serveur.
OriginalL'auteur Andrew Hare
Salutations,
Moi aussi, je suis en train d'effacer une liste déroulante, une fois qu'une valeur de l'autre déroulante est sélectionné. Lorsque l'utilisateur passe de soumettre le formulaire, il devrait y avoir une seule goutte-bas qui a une valeur. J'ai commencé le code comme indiqué ci-dessous, mais la liste déroulante ne sera pas réinitialisé lorsque la valeur de l'autre déroulante est sélectionné. Je suis sûr que je suis absent quelque chose de très simple ou mon nom est éteint. Merci.
`<%@ Page Language="C#" AutoEventWireup="true" CodeFile="homepagestate.aspx.cs" inherits="_homepagestate"%>
< asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="sel">
< asp:ListItem Value="-Sélectionnez un ou plusieurs états,-">< /asp:ListItem>
< asp:ListItem Value="ALABAMA">< /asp:ListItem>
< asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true">
< asp:ListItem Value="-Sélectionnez l'Une-">< /asp:ListItem>
< /asp:DropDownList>
à l'aide du Système;
en utilisant le Système.De données;
en utilisant le Système.Configuration;
en utilisant le Système.Collections;
en utilisant le Système.Web;
en utilisant le Système.Web.De sécurité;
en utilisant le Système.Web.L'INTERFACE utilisateur;
en utilisant le Système.Web.L'INTERFACE utilisateur.Contrôles webcontrols;
en utilisant le Système.Web.L'INTERFACE utilisateur.Contrôles webcontrols.WebParts;
en utilisant le Système.Web.L'INTERFACE utilisateur.HtmlControls;
public partial class _homepagestate : Système.Web.L'INTERFACE utilisateur.Page
{
}
}
'
OriginalL'auteur
C'est en fait à partir de parrkid sur un autre stackoverflow question, mais ajouter ceci à la fin de votre page:
Yep...total hack pour ce qui est probablement un asp.net mais à mon humble avis 😛
OriginalL'auteur kenyee