J'ai une case à cocher et une zone de texte dans un GridView (pour chaque ligne), et j'aimerais pouvoir écrire du javascript qui activerait et désactiverait la zone de texte en fonction de l'état du case à cocher (cochée ou décochée). Je suppose que je devrais donner à JS l'index des lignes en quelque sorte. Est-ce possible?Désactivation/activation de la zone de texte dans GridViewRow
Répondre
Merci pour toutes vos réponses, j'ai travaillé autour de cette question en faisant juste un postback - pas la meilleure méthode, mais en raison de contraintes de temps, il était le choix logique
Si vous êtes prêt à utiliser jquery cela peut être très facilement accompli comme suit:
$(document).ready(function() {
$('.grid tr').each(function() {
var r = $(this);
var c = r.find('.check');
var t = r.find('.text');
var f = function(c1, t1) { return function() {
if (c1.attr('checked')) {
t1.removeAttr('disabled');
}
else {
t1.attr('disabled', 'disabled');
}
};
};
c.click(f(c, t)); // attach click event handler
f(c, t); // set initial state
});
});
script ci-dessus est en supposant que la table gridview est décorée de grid
classe css et chaque zone de texte et case à cocher sont décorées avec check
et text
classe css respectivement.
Oui, c'est absolument possible.
Pour mettre en œuvre ce que vous devez faire ce qui suit:
Ecrire une fonction JavaScript générique pour gérer l'activation/désactivation d'une zone de texte en fonction de l'état de la case;
Exemple: -
function ManageControlEnabling(sourceCheckBoxId, affectingControlId)
{
var sourceCheckBox = document.getElementById(sourceCheckBoxId);
var affectingControl = document.getElementById(affectingControlId);
var shouldEnable = false;if (sourceCheckBox && affectingControl)
{
shouldEnable = sourceCheckBox.checked;if(shouldEnable) affectingControl.disabled = false; else affectingControl.disabled = true;
}
}gérer l'événement Row-lié aux données de la grille-View. Implémentez une fonctionnalité similaire dans votre code .Net, pour gérer l'activation/désactivation de la zone de texte (pour chaque ligne) en fonction de l'état de la case à cocher. Et ajoutez également la fonction JavaScript à la case à cocher;
Exemple: -CheckBox checkSource; TextBox textAffecting; checkSource = e.Row.FindControl("cbSource") as CheckBox; textAffecting = e.Row.FindControl("tbAffecting") as TextBox; if(checkSource != null) { textAffecting.Enabled = checkSource.Checked; } checkSource.Attributes.Add("onclick", "ManageControlEnabling('" + checkSource.ClientID + "', '" + textAffecting.ClientID + "', true);");
S'il vous plaît voir si cela aide.
Merci.
Merci pour votre aide :) Malheureusement cela ne fonctionne pas - la partie rowdatabound fonctionne (elle ajoute les attributs, et la zone de texte est désactivée/activée selon l'état de la case à cocher), mais elle n'activera jamais la zone de texte lorsque je clique même si je sors tous les if et je l'ai juste activé la zone de texte. – Chris
- 1. Obtenir une zone de texte dans la zone de notification
- 2. enfant remplaçant GridViewRow HyperLink
- 3. couleur de texte simple dans la zone de texte riche
- 4. Handling Cursor dans la zone de texte
- 5. vider la zone de texte dans IE
- 6. étiquettes dans la zone de texte
- 7. Liens dans la zone de texte C#
- 8. WPF CommandParameter dans la zone de texte
- 9. Données dans la zone de texte dynamique
- 10. jQuery: Insérer du texte dans la zone de texte
- 11. Vérifiez Valider texte dans la zone de texte + Windows Forms
- 12. Remplacer le texte sélectionné dans la zone de texte
- 13. Rendu du texte html dans la zone de texte Dashcode
- 14. comment mis texte prédéfini dans la zone de texte
- 15. Bande "http: //" du texte collé dans la zone de texte
- 16. Affichage d'une valeur de zone de texte dans une autre zone de texte pendant que l'utilisateur saisit la valeur dans la zone de texte
- 17. Flex: Modification de la zone de texte
- 18. Validation de la zone de texte
- 19. Valeur de la zone de texte modifiée
- 20. Saisie automatique de la zone de texte
- 21. Vérification de la zone de texte vide
- 22. Nouvelle zone de texte
- 23. Zone de texte incorrecte
- 24. zone de texte - réglage de la précision
- 25. Evénement dynamique de la zone de texte
- 26. définir un texte de zone de texte égal au texte de la zone de texte sur un formulaire différent?
- 27. Zone de texte HTMl
- 28. ASP.NET Afficher les éléments sélectionnés de la zone de liste dans la zone de texte
- 29. Contrôle de zone de texte dans DataGridView
- 30. Suppression du texte par défaut de la zone de texte
La seule chose que je dois ajouter est de désactiver voir la validation de l'état sur la page asp.net. Parce que vous modifiez l'état des contrôles dans la page, la validation d'état d'affichage va lancer des erreurs. De telles erreurs sont intermittentes et difficiles à déboguer, mais elles sont là. La désactivation de la validation de l'état d'affichage empêche cela et donne à JavaScript la possibilité de modifier les contrôles html du côté client, tout en forçant le côté serveur à ne pas en faire trop. – bleepzter