【发布时间】:2010-12-10 09:25:21
【问题描述】:
我的 asp.net 页面中有多行文本框。当用户输入一些数据时,我将数据存储在数据库表中。现在,当我将数据显示回页面时,用户在输入数据时按下的 ENTER 会丢失,并且所有数据都显示在同一行中。所以我想保存输入数据时按下的 ENTER,并以输入的形式显示数据。请帮助
【问题讨论】:
标签: asp.net
我的 asp.net 页面中有多行文本框。当用户输入一些数据时,我将数据存储在数据库表中。现在,当我将数据显示回页面时,用户在输入数据时按下的 ENTER 会丢失,并且所有数据都显示在同一行中。所以我想保存输入数据时按下的 ENTER,并以输入的形式显示数据。请帮助
【问题讨论】:
标签: asp.net
HTML collapses whitespace:换行符确实存储在数据库中,但在页面上呈现为空格字符。
渲染时可以用<br />元素替换换行符:
yourLabel.Text = Server.HtmlEncode(yourData).Replace("\n", "<br />");
不过,除了在多行只读TextBox 控件中呈现数据之外,没有简单的解决方案可以恢复制表符。
【讨论】:
显示数据时将输入字符char(13)替换为html换行符
。
lblDisplay.Text = GetTextFromDb().Replace(char(13),"<br/>");
【讨论】:
通常,当用户在多行文本框或文本区域中按下 tab 键时,焦点将跳转到下一个 html 页面元素,因此用户将无法在其输入中添加选项卡。但是,如果用户从 Word 中复制并粘贴其文本,则该选项卡将被保留并保存到 SQL 数据库中。如果是这种情况,您可以简单地打开一个空白 Word 文档,输入一个选项卡,突出显示该选项卡,然后将其复制并粘贴到替换语句中,将其替换为 &nbsp 或左边距设置为 @ 的 css span 987654322@。当您以读取模式显示条目时,它应该会正确呈现。以下代码替换了呈现条目中的制表符和换行符。
objLabel = FindControl(strQuestionId)
strReformattedText = reader("Answer").Replace(System.Environment.NewLine, "<br />")
strReformattedText = strReformattedText.Replace(" ", " ") 'Replace tab character with
objLabel.Text = strReformattedText
【讨论】: