我有一个textarea,按Enter键输入多行文字:
<asp:TextBox ID="tbMessage" runat="server" ClientIDMode="Static"
TextMode="MultiLine" Columns="30" Rows="5"></asp:TextBox>
我保存代码隐藏的文本(MessageText
列的类型为varchar
):
using (SqlCommand qSave = new SqlCommand())
{
qSave.Connection = oCon;
qSave.CommandType = CommandType.Text;
qSave.CommandText = @"INSERT INTO [Db1].[dbo].[Table1] (MessageText) VALUES (@MessageText)";
qSave.Parameters.AddWithValue("@MessageText", tbMessage.Text);
try
{
oCon.Open();
qSave.ExecuteNonQuery();
}
catch (SqlException ce)
{
}
finally
{
oCon.Close();
}
}
我检索列并将其显示在代码隐藏的标签内:
public void MyFunction()
{
strSql = @"SELECT * FROM [Db1].[dbo].[Table1]";
using (SqlConnection conn = new SqlConnection(gloString))
{
try
{
// create data adapter
SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
// this will query your database and return the result to your datatable
myDataSet = new DataSet();
da.Fill(myDataSet);
string specific = "";
string generic = "";
string strTemp = "";
foreach (DataRow r in myDataSet.Tables[0].Rows)
{
if (r["MessageText"].ToString().Length <= 65)
{
strTemp = r["MessageText"].ToString();
}
else
{
strTemp = TruncateLongString(r["MessageText"].ToString(), 65) + "...";
}
specific += "<span class='hoverText tooltip' title='" + this.Server.HtmlEncode(r["MessageText"].ToString().Replace("\r\n", "<br />")) + "'>" + this.Server.HtmlEncode(strTemp) + "</span><span class='dvMsgInitHidden'>" + this.Server.HtmlEncode(r["MessageText"].ToString().Replace("\r\n", "<br />")) + "</span><br /><br />";
}
lblMessage.Text = specific;
upMessage.Update();
}
catch (Exception ce)
{
}
}
}
public string TruncateLongString(string str, int maxLength)
{
return str.Substring(0, maxLength);
}
从下面的屏幕截图中可以看出,title
显示正确但消息全部混乱到一行:
请帮我解决。
答案 0 :(得分:6)
以下CSS负责:
white-space: pre-wrap;
答案 1 :(得分:1)
我们已经制作了一个帮助方法,只需用HTML中断标记来替换\ r \ n,\ n和\ r \ n输出。我们使用原始\ r \ n字符将文本存储在数据库中,在编辑期间,TextArea自然地遵循换行符。只有在&#34;详细信息页面上显示时才会出现#34;在一个范围内,应该完成到HTML中断标记的转换。
答案 2 :(得分:0)
如果您需要在ddbb中存储格式化,则可以使用rtf或html标记。 Rtf可能更适合桌面应用,在您的情况下,您需要在文本(p,br等)中存储html标签