找回密码
 立即注册

QQ登录

只需一步,快速开始

lud
论坛元老   /  发表于:2012-4-16 18:08  /   查看:9207  /  回复:10
Spread单元格支不支持在数值类型上显示文本型,数据只是显示,不保存

10 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-4-17 09:08:00
沙发
在Spread for WinForms 6.0中你可以使用 ComboBoxCellType ,ComboBoxCellType有Value和Text,Value存放实际数据,Text适用于显示的文本。
回复 使用道具 举报
lud
论坛元老   /  发表于:2012-4-18 15:58:00
板凳
不行,筛选之后数据不显示,版主可以试下,数值型数据上绑定COmbox筛选字符型的数据
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-4-18 16:28:00
地板
你这的“筛选之后”是指这一列数据过滤之后吗?

附件演示了如何使用ComboBox实现显示文本,VS2010 + Spread 6.0:
4065_ComboBox.zip (9.83 KB, 下载次数: 384)
回复 使用道具 举报
lud
论坛元老   /  发表于:2012-4-19 12:05:00
5#
对不起,版主;是我表达不清楚,我后台数据库类型是数值型数据,我前台的某些单元格上想用字符型数据显示在上面,有没有可以让单元格值挂起的属性,只在上面显示,数据不交换
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-4-19 17:24:00
6#

回复 5# lud 的帖子

请参考下面的代码:
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             MyCellType ctp = new MyCellType();
  4.             fpSpread1.ActiveSheet.Columns[0].CellType = ctp;
  5.             fpSpread1.ActiveSheet.Cells[0, 0].Value = 3;
  6.             fpSpread1.ActiveSheet.Cells[1, 0].Value = 2;
  7.             fpSpread1.ActiveSheet.Cells[2, 0].Value = 5;
  8.         }
  9.     }
  10.     public class MyCellType : FarPoint.Win.Spread.CellType.GeneralCellType
  11.     {
  12.         public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
  13.         {
  14.             if (value != null)
  15.             {
  16.                 value = string.Format("第{0}名", value.ToString());
  17.             }
  18.             base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
  19.         }
  20.     }
复制代码
回复 使用道具 举报
lud
论坛元老   /  发表于:2012-4-23 16:48:00
7#
这几天太忙,未及时回复,版主,我想问下,这个文本内容不同,这样设置能不能传值设置里面显示的内容 value = string.Format("第{0}名", value.ToString());
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-4-23 17:07:00
8#
最终显示的文本完全可以自己来定义,比如通过下面的代码来控制显示的文本:
  1.     public class MyCellType : FarPoint.Win.Spread.CellType.GeneralCellType
  2.     {
  3.         public System.Collections.Generic.Dictionary<int, string> Items
  4.         {
  5.             get;
  6.             set;
  7.         }
  8.         public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
  9.         {
  10.             if (value != null)
  11.             {
  12.                 value = Items[Convert.ToInt32(value.ToString())];
  13.             }
  14.             base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
  15.         }
  16.     }
复制代码
  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {
  3.         MyCellType ctp = new MyCellType();
  4.         Dictionary<int, string> items = new Dictionary<int, string>();
  5.         items.Add(1, "aaaa");
  6.         items.Add(2, "bbbb");
  7.         items.Add(3, "cccc");
  8.         items.Add(4, "dddd");
  9.         items.Add(5, "eeee");
  10.         ctp.Items = items;
  11.         fpSpread1.ActiveSheet.Columns[0].CellType = ctp;
  12.         fpSpread1.ActiveSheet.Cells[0, 0].Value = 3;
  13.         fpSpread1.ActiveSheet.Cells[1, 0].Value = 2;
  14.         fpSpread1.ActiveSheet.Cells[2, 0].Value = 5;
  15.     }
复制代码
回复 使用道具 举报
lud
论坛元老   /  发表于:2012-4-23 17:15:00
9#
看了这个,谢谢版主,我刚才还想着在绘制时操作呢,现在明白了,谢谢,非常感谢,有空来合肥请你喝酒
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-4-23 17:32:00
10#
楼主太客气了,不过喝酒是个很好的提议,
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部