ASP.Net: Comment maintenir la zone de texte de l'Etat après la publication
Je voudrais savoir comment maintenir le contrôle de l'état qui a été modifié en Javascript.
J'ai deux zones de texte, un DropDownList et un bouton (tous les Runat=Server) en C# ASP.net 2010 Express.
La première zone de texte est de simplement accepter ce que des données la saisie de l'utilisateur.
Deuxième zone de texte de permettre à l'état change en fonction DDL valeur sélectionnée.
Si ddl valeur sélectionnée est "-", deuxième zone de texte sera Activé = False.
Si ce n'est "-", il deviendra Enabled = True. Cette option activer est fait à l'aide de Javascript.
Dans mon Chargement de la Page de l'événement, j'ai code ci-dessous.
if (!IsPostBack)
{
txtKey2.Text = "";
txtKey2.BackColor = System.Drawing.ColorTranslator.FromHtml("#CCCCCC");
txtKey2.Enabled = false;
}
Et dans ma page aspx, j'ai un peu de javascript qui va effacer la zone de texte données et de désactiver la zone de texte.
Ici est pour la Deuxième zone de texte.
<asp:TextBox ID="txtKey2" runat="server" Width="425px" EnableViewState="False"></asp:TextBox>
Et voici pour DDL.
<asp:DropDownList ID="selKey1" runat="server" onchange="EnableSelkey(this.value,1)">
<asp:ListItem Value="0">-</asp:ListItem>
<asp:ListItem Value="1">AND</asp:ListItem>
<asp:ListItem Value="2">OR</asp:ListItem>
</asp:DropDownList>
Voici le code de mon Javascript. (J'ai un plan pour mettre en œuvre d'autres textbox et ddl donc, dans mon code j'ai d'Autre si la condition).
function EnableSelkey(val, strID) {
var txtBox;
if (strID == "1")
txtBox = document.getElementById('<%= txtKey2.ClientID %>');
else if (strID == "2")
txtBox = document.getElementById('<%= txtKey3.ClientID %>');
else
txtBox = document.getElementById('<%= txtKey4.ClientID %>');
if (val != 0) {
txtBox.disabled = false;
txtBox.style.backgroundColor = "White";
txtBox.value = "";
txtBox.select();
}
else {
txtBox.disabled = true;
txtBox.style.backgroundColor = "#CCCCCC";
txtBox.value = "";
}
}
Je n'ai rien dans l'événement clic du bouton.
En utilisant au-dessus de tout le code, quand je lance le projet, le chargement de la page Ok.
La deuxième zone de texte est activé état est défini sur False (par le biais de l'événement Page_Load). Jusqu'à présent Ok.
Puis, à partir de mon navigateur, j'ai le choix ddl valeur pour les autres, au lieu de "-", la zone de texte devenu permettre en raison de javascript. C'est Ok.
J'ai d'entrée de la valeur et cliquez sur le bouton. Page de Publication qui se passe ici. Zone de texte est toujours activé (en raison de EnableViewState = False pour ma zone de texte).
- Je choisir ddl valeur à "-", deuxième zone de texte est devenu handicapé.
Cliquez sur le bouton, la page de publication arriver, mais cette fois la zone de texte est toujours activé. << C'est la question que je suis en train de résoudre. - Je changer EnableViewState, ViewStateMode dans des valeurs différentes mais toujours le même.
Est qu'il ya une solution pour cela?
Voici mon test de l'URL de l'image.
L'état 1 ,
L'état 2 ,
L'état 3
Désolé pour le long post.
Vous devez vous connecter pour publier un commentaire.
J'ai essayé et pas trouvé de solution à côté de l'aide supplémentaire HiddenField de contrôle.
- Je mettre à jour le champ caché quand je l'ai mise à jour de l'état de ma zone de texte en Javascript.
Et sur ma Page événement de Chargement, j'ai vérifié tout le champ caché valeurs et basée sur la hiddenfield valeurs, je vais désactiver/activer mes zones de texte qui n'est pour moi pas une bonne solution.
Imaginer que j'ai 10 ou 15 zones de texte dans mon formulaire, j'ai besoin d'avoir 10 ou 15 champ caché juste à maintenir le côté client de résultat action.
Actuellement, c'est la seule solution pour moi.
Je ne suis pas sûr que cela peut-il considérer comme "Réponse", donc je n'ai pas de près cette question.
Vous Avez de vous appeler la fonction javascript sur chaque publication.
Il Peut être vous aider, faites le moi savoir pour obtenir de l'aide.
J'ai trouvé une solution qui a fonctionné a été de mettre le code que j'ai mis dans le !IsPostBack section pour l'activation et la désactivation des zones de texte aussi directement sur la page de l'événement load.