找回密码
 立即注册

QQ登录

只需一步,快速开始

withsmile

初级会员

21

主题

50

帖子

319

积分

初级会员

积分
319

活字格认证

withsmile
初级会员   /  发表于:2012-11-13 13:45  /   查看:5850  /  回复:5
Spread从数据库取数
  1. _punSpread.Sheets[0].DataSource = dsDetail;
复制代码


从表原本显示
  • 外观    1.000
  • 质量    1.000
  • 颜色    0.000

想显示成
  • 外观    符合要求
  • 质量    符合要求
  • 颜色    不符合要求

  1.                     int count = this._punSpread.ActiveSheet.GetChildView(i, 0).Rows.Count;
  2.                     string caption = "", value = "",value2 = “”;
  3.                     FarPoint.Win.Spread.CellType.TextCellType txtCellType = new FarPoint.Win.Spread.CellType.TextCellType();
  4.                     txtCellType.MaxLength = 25;
  5.                     for (int j = 0; j < count; j++ )
  6.                     {
  7.                         caption = this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[j, 1].Value.ToString();
  8.                         value = this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[j, 2].Value.ToString();
  9.                         value2 =  _boolToStrDisplay(caption, value);//value为1返回“符合要求”,value为0返回“不符合要求”
  10.                         this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[j, 2].CellType = txtCellType;
  11.                         this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[j, 2].Value = value2;
  12.                     }
复制代码


this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[j, 2].Value = “1.000” 是没问题的。

this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[j, 2].Value = “符合要求”提示字符串格式不正确。

请问该如何设置,才能显示字符串?

5 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-13 13:58:00
沙发
withsmile 你好

你可以通过设置自定义的CellType类型来实现显示不同的文本,这篇文章和你的需求有些类似,请参考:http://gcdn.grapecity.com/showto ... 5&typeid=22
回复 使用道具 举报
withsmile
初级会员   /  发表于:2012-11-13 14:27:00
板凳
谢谢版主,不过我的情况不适用这种方法,因为同样是“1”,对应的可能是”合格“,”符合要求“,”通“,同样是”0“,对应的可能是”不合格“,”不符合要求“,”断“。

  1.                     this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[0, 2].Value = "11.000";//无报错
  2.                     this._punSpread.ActiveSheet.GetChildView(i, 0).Cells[1, 2].Value = "合格";//输入字符串的格式不正确。
复制代码

我该如何设置,才能使上述代码运行通过?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-13 16:56:00
地板
给不同单元格使用不同的Items就可以:
  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             Dictionary<string, string> items;

  4.             MyCellType ctp = new MyCellType();
  5.              items = new Dictionary<string, string>();
  6.             items.Add("0", "不合格");
  7.             items.Add("1", "合格");
  8.             ctp.Items = items;
  9.             fpSpread1.ActiveSheet.Columns[0].CellType = ctp;
  10.             fpSpread1.ActiveSheet.Cells[0, 0].Value = 0;
  11.             fpSpread1.ActiveSheet.Cells[1, 0].Value = 1;

  12.             MyCellType ctp2 = new MyCellType();
  13.             items = new Dictionary<string, string>();
  14.             items.Add("1", "符合要求");
  15.             items.Add("0", "不符合要求");
  16.             ctp2.Items = items;
  17.             fpSpread1.ActiveSheet.Columns[1].CellType = ctp2;
  18.             fpSpread1.ActiveSheet.Cells[0, 1].Value = 0;
  19.             fpSpread1.ActiveSheet.Cells[1, 1].Value = 1;

  20.             MyCellType ctp3 = new MyCellType();
  21.             items = new Dictionary<string, string>();
  22.             items.Add("1", "通");
  23.             items.Add("0", "断");
  24.             ctp3.Items = items;
  25.             fpSpread1.ActiveSheet.Columns[2].CellType = ctp3;
  26.             fpSpread1.ActiveSheet.Cells[0, 2].Value = 0;
  27.             fpSpread1.ActiveSheet.Cells[1, 2].Value = 1;
  28.         }
复制代码



55.png
回复 使用道具 举报
withsmile
初级会员   /  发表于:2012-11-14 08:31:00
5#
版主,你好

我想了一个折中的办法,在原列(number)旁加一列(text),该列(text)能显示数字、文本,再把原列(number)隐藏,效果如图。

隐藏一列,添加一列。

隐藏一列,添加一列。

这样能满足要求,同时也避免了开贴遇到的问题。

谢谢版主指点迷津。:strong:
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-11-14 09:12:00
6#
withsmile 你好

非常感谢你分享你的解决方案。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部