Comment créer une zone de texte Sharepoint (entrée, type = texte) de manière dynamic Multiligne?

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

METTRE À JOUR

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; 

MISE À JOUR 2

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;