找回密码
 立即注册

QQ登录

只需一步,快速开始

tingche

银牌会员

17

主题

76

帖子

3877

积分

银牌会员

积分
3877

活字格认证

[已处理] spread单元格设置

tingche
银牌会员   /  发表于:2013-9-29 10:30  /   查看:23310  /  回复:37
请问下:
spread单元格内文字如果超出单元格宽度,如何设置自动换行显示?

同时,实现鼠标放到单元格上,如果单元格内容超出单元格宽度,就以tips形式展示
如图:
tips.png

,如何实现?有demo吗?

谢谢!

37 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-9-29 13:30:00
沙发
Spread for ASP.NET 7 默认会自动换行显示,同时也可以通过以下代码来设置:
[code]    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            FarPoint.Web.Spread.GeneralCellType ct = new FarPoint.Web.Spread.GeneralCellType();
            ct.Multiline = true;
            ct.AllowWrap = true;

            FpSpread1.Sheets[0].DefaultStyle.CellType = ct;
            FpSpread1.Sheets[0].Cells[0, 0].Value = "Spread for ASP.ENT V7 文本自动换行显示测试";
        }
    }code]

第二个问题目前正在调查中。

1155.png

10505_Tip.zip (7.86 KB, 下载次数: 2238)
回复 使用道具 举报
tingche
银牌会员   /  发表于:2013-9-29 13:50:00
板凳
谢谢,不过我用的是5.0版本的spread,用了你这个,没有实现这个效果,是版本原因吗?

用您的方法,在输入英文和数字的时候,当文本超过单元格长度时,可以实现自动换行,但是一旦存入数据库,重新加载后,又是一行显示了,如图:上面一行是输入时的状态,下面一行是显示时的状态

multiCell.png

但是输入汉字的时候,当文本超过单元格长度后,输入时和保存后会自动换行,正如你的例子一样。我估计是汉字之间会不会默认为有空格,因为汉字见间隔大一些,但是英文和数字状态,就不能实现自动换行了!


另外,实现alt属性显示单元格内数据,这个是向textCellType添加样式就可以了吗?请问添加自定义样式到控件,是怎么添加的,谢谢!!!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-9-29 16:11:00
地板
第一个问题:如果是没有空格的 数字+, 系统会认为是一个单词,所以没有自动换行,如果加上空格就会自动换行。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-9-29 16:22:00
5#
第二个问题,可以参考以下代码:
  1.     protected override void Render(HtmlTextWriter writer)
  2.     {
  3.         Table table = FpSpread1.FindControl("viewport") as Table;
  4.         for (int row = 0; row < table.Rows.Count; row++)
  5.         {
  6.             for (int col = 0; col < table.Rows[row].Cells.Count; col++)
  7.             {
  8.                 if (!string.IsNullOrWhiteSpace(FpSpread1.ActiveSheetView.Cells[row, col].Text))
  9.                 {
  10.                     table.Rows[row].Cells[col].Attributes.Add("title", FpSpread1.ActiveSheetView.Cells[row, col].Text);
  11.                 }
  12.             }
  13.         }

  14.         base.Render(writer);
  15.     }
复制代码
回复 使用道具 举报
tingche
银牌会员   /  发表于:2013-9-29 17:41:00
6#
不好意思,转vb.net没成功,帮我转转可以么!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-9-29 17:56:00
7#
  1.     Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter)
  2.         Dim table As Table
  3.         table = FpSpread1.FindControl("viewport")
  4.         For row As Integer = 0 To table.Rows.Count
  5.             For col As Integer = 0 To table.Rows(row).Cells.Count
  6.                 If Not String.IsNullOrWhiteSpace(FpSpread1.ActiveSheetView.Cells(row, col).Text) Then
  7.                     table.Rows(row).Cells(col).Attributes.Add("title", FpSpread1.ActiveSheetView.Cells(row, col).Text)
  8.                 End If
  9.             Next
  10.         Next
  11.         MyBase.Render(writer)
  12.     End Sub
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-9-29 17:57:00
8#
同时,给你分享一款在线的代码转换工具
http://www.developerfusion.com/tools/convert/csharp-to-vb/
回复 使用道具 举报
tingche
银牌会员   /  发表于:2013-9-30 10:35:00
9#
非常感谢帮助!
但是还是想问问,在输入文字为英文和数字的时候,超过单元格边框,不会自动换行。spread 基于Excel的功能开发的,在EXCEL里,如果设置了自动换行,当文本超过单元格宽度的时候,即使没有空格,也是会自动换行的,spread能实现吗??如果有,有解决方案吗?谢谢!!!
如果实在不行,能否给个修改的入口,我们想以","为换行标志,谢谢!!!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-9-30 16:47:00
10#
数字加英文字符会被识别为一个单词,所以没有折行显示,如果是数字加中文字符便可自动折行显示比如:1,2,3,4
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部