Je veux une zone de texte sur mon composant WebPart qui se développera verticalement à la demande. Autrement dit, ce sera une ligne à moins que l’utilisateur n’entre trop de texte pour cette ligne, auquel cas le mot sera enveloppé et grossi verticalement pour s’adapter à la verbosité de l’utilisateur.
Je crée mes contrôles / éléments de manière dynamic, et je crée cet élément comme suit:
boxPaymentExplanation = new TextBox() { CssClass = "dplatypus-webform-field-input" }; boxPaymentExplanation.Width = 660; boxPaymentExplanation.Style.Add("display", "inline-block");
J’ai essayé d’append cette ligne, dans l’espoir d’obtenir cette fonctionnalité:
boxPaymentExplanation.Style.Add("TextMode", "MultiLine");
… mais cela ne change rien au comportement de la zone de texte – je peux y entrer du texte “jusqu’à ce que les bovins reviennent à la grange”, mais il continue simplement à append les caractères à la fin de la zone de texte sur une seule ligne. Ça ne s’enroule jamais, alors ça ne grandit jamais
C’est le jQuery qui fonctionne (dérivé du lien fourni par Christopher Jennings):
$(document).on("keyup", "[id$=explainPaymentTextBox]", function (e) { while ($(this).outerHeight() < this.scrollHeight + parseFloat($(this).css("borderTopWidth")) + parseFloat($(this).css("borderBottomWidth"))) { $(this).height($(this).height() + 1); }; });
… avec ce C #:
boxPaymentExplanation = new TextBox() { CssClass = "dplatypus-webform-field-input", ID = "explainPaymentTextBox" }; boxPaymentExplanation.Width = 660; boxPaymentExplanation.Style.Add("display", "inline-block"); boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;
Malheureusement, bien que la jQuery ci-dessus descente dans la-mælström-esque fonctionne pour une croissance dynamic de la zone de texte, elle ne fonctionne pas si l’utilisateur supprime du texte; J’aimerais aussi que cela diminue aussi quand cela se produit …
Vous êtes sur la bonne voie. Vous devez définir la propriété TextMode sur Multiline. Cependant, l’approche que vous avez adoptée consiste à append un atsortingbut de balise HTML plutôt que de définir la propriété .NET. Il suffit de remplacer boxPaymentExplanation.Style.Add("TextMode", "MultiLine");
with boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;