如何动态多行创建 Sharepoint 文本框(输入,类型=文本)?

How can I make a Sharepoint textbox (input, type=text) dynamically Multiline?

我想要我的 Web 部件上的文本框可以按需垂直增长。也就是说,它将是一行,除非用户为该行输入了太多文本,此时它自动换行并垂直增长以适应用户的冗长。

我正在动态地创建我的 controls/elements,我这样创建这个元素:

boxPaymentExplanation = new TextBox()
{
    CssClass = "dplatypus-webform-field-input"
};
boxPaymentExplanation.Width = 660;
boxPaymentExplanation.Style.Add("display", "inline-block");

我尝试添加这一行,希望实现此功能:

boxPaymentExplanation.Style.Add("TextMode", "MultiLine");

...但它对文本框的行为没有明显改变 - 我可以在其中输入文本 "until the bovines come back to the barn" 但它只是将字符添加到单行文本框的末尾。它从不缠绕,所以它永远不会增长。

更新

这是有效的 jQuery(源自 Christopher Jennings 提供的 link):

$(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);
    };
});

...连同此 C#:

boxPaymentExplanation = new TextBox()
{
    CssClass = "dplatypus-webform-field-input",
    ID = "explainPaymentTextBox"
};
boxPaymentExplanation.Width = 660;
boxPaymentExplanation.Style.Add("display", "inline-block");
boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;

更新 2

不幸的是,虽然上面的 descent-into-the-mælström-esque jQuery 适用于动态增长文本框,但如果用户 删除 它就不起作用文本;我希望它在发生这种情况时也能缩小...

你走在正确的轨道上。您需要将 TextMode 属性 设置为多行。但是,您采用的方法是添加一个 HTML 标记属性,而不是设置 .NET 属性。只需将 boxPaymentExplanation.Style.Add("TextMode", "MultiLine"); 替换为 boxPaymentExplanation.TextMode = TextBoxMode.MultiLine;