当前位置:编程学习 > C#/ASP.NET >>

水晶报表 如何换行

如字符串“1234\n4321”,我想在文本框中出现:
1234
4321
这样的效果。
请问如何实现?

(我这段时间用水晶报表,发现其问题多多,顺便问一下是不是有更好的工具?) --------------------编程问答-------------------- 问题多多隻是說明你不熟悉的功能多,有沒有更好的工具是見仁見智,話說“高處不勝寒”,你說有沒有比Windows更優秀的操作系統呢?不管這個系統Bug有多少,全世界的PC裝的最多的還是Windows。水晶報表問題是有,但哪個軟件沒有問題呢?我隻想說,作為全世界使用率最高的報表開發工具,必然樹大招風,一有問題就變成千夫所指,但微軟將其內置為通用的.NET報表開發工具,一定有它的道理,水晶報表功能之強大,目前還是報表開發工具的翹楚。 --------------------编程问答-------------------- 你想實現換行很簡單,如果是文本對象直接按回車就會換行。 --------------------编程问答-------------------- 如果是Field對象,也很簡單,用Crystal語句加個判斷即可。 --------------------编程问答-------------------- 谢谢forgot(忘记forgot2000)的教导。
我用的是文本对象,直接回车当然可以,请问程序中如何控制? --------------------编程问答-------------------- 文本對象是設計期加進去的已經定好的。你想在程序中控制什麼?你的意思是說,你在文本對象中寫入字符串“1234\n4321”,然後在程序中顯示出換行結果嗎?這也很簡單,不過你要先設置好文本對象的高度,才能顯示完整。 --------------------编程问答-------------------- 高度当然足够,现在如果文本超过1行是会自动换行的。

我的最终需求是:一个文本框,大概是6行左右,但大部分的文字是一到两行,我想让它们垂直居中;但是水晶报表没有垂直居中的功能(或者我不知道),所以现在考虑自己判断字符串大概是有几行,然后程序控制加两到三个空行。
\n \r\n等等我都试了,无效。

另外,可能有些字符串取出来就是带换行的,如果要显示换行,怎么办?现在我怎么都显示不了换行。

请指点的详细一些,本人比较笨,惭愧,谢谢。 --------------------编程问答-------------------- 字符串是有水平居中功能,但沒有垂直居中功能,如果是靜態文本對象,你根本不需要自己判斷,直接加入回車換行即可,我想你可能是動態文本對象,即可能是從數據庫中取出字符串吧,如果是這樣的話,不是更好控制嗎?在.NET裡寫代碼可以控制任何文本文本對象(而不管是否動態還是靜態),比如你可以設置文字轉譯常數,舉個例子crHTMLText表示資料轉譯成 HTML 的資料。那麼你就可以使用HTML兼容支援的HTML標記,好比p 和 br 都具有分段(即換行)作用。
--------------------编程问答-------------------- 我也很关系这个问题,我也曾经尝试过很多方式总是不能得到解决。
forgot(忘记forgot2000)上面回答的好像没回答到问题的点上。
期待能得到准确的答案。 --------------------编程问答-------------------- 1、如果文本框的值来自数据库中,可以用Select '1234' + char(13) + '4321'
2、如果要动态设置文本的内容,需要用到参数字段,实例
假设报表文本框以参数字段ss为内容
[VB.net]
Dim rpt As New CrystalReport1
Dim ParamValues As New CrystalDecisions.Shared.ParameterValues
Dim DiscreteValue As New CrystalDecisions.Shared.ParameterDiscreteValue
DiscreteValue.Value = "1234" & vbCrLf & "4321"
ParamValues.Add(DiscreteValue)
rpt.DataDefinition.ParameterFields("ss").ApplyCurrentValues(ParamValues)
rpt.SetDataSource(myDataSource)
[C#]
CrystalReport1  rpt = new CrystalReport1();
CrystalDecisions.Shared.ParameterValues ParamValues = new CrystalDecisions.Shared.ParameterValues();
CrystalDecisions.Shared.ParameterDiscreteValue DiscreteValue = new CrystalDecisions.Shared.ParameterDiscreteValue();
DiscreteValue.Value = "1234\n4321";
ParamValues.Add(DiscreteValue);
rpt.DataDefinition.ParameterFields["ss"].ApplyCurrentValues(ParamValues);
rpt.SetDataSource(myDataSource);

--------------------编程问答-------------------- 新建公式


replace(字段,'\n',chr(13))

调用公式,搞定收工! --------------------编程问答-------------------- 我用\r\n是可以换行的,不知道楼主把报表中字符串的属性允许换行(Can Grow)勾上没有

还有楼主,水晶报表没有垂直居中,只有水平居中, --------------------编程问答-------------------- 控制数据的话数据库保存\r\n  他拿到报表上面的话 就会自动换行的 --------------------编程问答-------------------- chr(13)  正解 --------------------编程问答-------------------- 哎。。 遇到同一个问题了。。 上述方法都不行,, 求指教啊!!! --------------------编程问答-------------------- 建个字段公式!!!  replace({字段},'\n',chr(13)) --------------------编程问答--------------------
引用 14 楼  的回复:
哎。。 遇到同一个问题了。。 上述方法都不行,, 求指教啊!!!


要确保你的字段值包含'\n'字符 --------------------编程问答-------------------- "1234" + System.Environment.NewLine + "4321"
试试这个
补充:.NET技术 ,  图表区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,