找回密码
 立即注册

QQ登录

只需一步,快速开始

simonshen

论坛元老

27

主题

72

帖子

1万

积分

论坛元老

积分
17729

活字格认证

simonshen
论坛元老   /  发表于:2012-8-28 19:27  /   查看:10577  /  回复:12
需求是这样,我希望通过搜索动态的生成列的数量,并且后台控制列头的文字,是否locked以及背景颜色等等,不知道版主是否有办法实现?谢谢

12 个回复

倒序浏览
simonshen
论坛元老   /  发表于:2012-8-28 19:29:00
沙发
列的数量是从数据库中的数据查出来的,比如查询出结果ID 分别为 T001;T002;T004
那么spread中就动态在固定的几列后增加3列,列头为: T001;T002;T004
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-8-29 10:10:00
板凳
回复 2楼simonshen的帖子

你好,可以实现以上需求,
设置方法如下:

  1.   this.FpSpread1.Sheets[0].ColumnCount = 3;
  2.             this.FpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = "T001";
  3.             this.FpSpread1.Sheets[0].ColumnHeader.Cells[0, 1].Text = "T002";
  4.             this.FpSpread1.Sheets[0].ColumnHeader.Cells[0, 2].Text = "T004";
复制代码
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-8-29 10:25:00
地板
版主您好,谢谢你的回复,我是希望增加列,而不是重新设置列。另外设置是否locked以及背景颜色之类的怎么设置呢?
我找到了VB的源代码,能否帮我转换一下?感谢

  .MaxCols = .MaxCols + 1
                    Call .SetText(.MaxCols, 0,‘xxxxx’ )
            .Col = .MaxCols
            .Row = -1
            .ColWidth(.MaxCols) = SPR_TEN_WIDTH
            .BackColor = &HAAFFFF               
            .Lock = False                       
            .CellType = CellTypeFloat         
            .TypeFloatMin = 0                  
            .TypeFloatMax = 9999999            
            .TypeHAlign = TypeHAlignRight      
            .TypeFloatDecimalPlaces = 0        
            .TypeFloatSeparator = True                     
            dynaOra.MoveNext
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-8-29 12:13:00
5#
回复 4楼simonshen的帖子

simonshen 您好,
1.增加列可以使用:

  1.             this.FpSpread1.Sheets[0].Columns.Add(插入位置, 插入列数);
复制代码

2.设置 Cell 的背景色和锁定 Cell 代码如下(转化了楼主提供的主要 VB 代码):
  1. this.FpSpread1.Sheets[0].Columns.Add(2, 3);

  2.             this.FpSpread1.Sheets[0].ColumnHeader.Cells[0, 2].Text = "T001";
  3.             this.FpSpread1.Sheets[0].ColumnHeader.Cells[0, 3].Text = "T002";
  4.             this.FpSpread1.Sheets[0].ColumnHeader.Cells[0, 4].Text = "T004";
  5.             //设置单元格背景色
  6.             this.FpSpread1.Sheets[0].Cells[0, 0].BackColor = System.Drawing.Color.Red;
  7.             //设置单元格是否锁定
  8.             this.FpSpread1.Sheets[0].Cells[0, 0].Locked = false ;
  9.             //设置单元格类型
  10.             FarPoint.Web.Spread.IntegerCellType intType = new FarPoint.Web.Spread.IntegerCellType();
  11.             this.FpSpread1.Sheets[0].Cells[0, 0].CellType = intType;
复制代码
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-9-7 15:55:00
6#
请问版主,           .TypeFloatDecimalPlaces = 0        
            .TypeFloatSeparator = True   
.ColWidth(.MaxCols) = SPR_TEN_WIDTH

是什么意思?应该怎么转换呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-9-7 17:08:00
7#
回复 6楼simonshen的帖子

simonshen 你好,
Spread 中没有对应的单元格类型,请问你这段代码的来源是?能否提供完整代码?还有楼主使用的平台是?WinForm 还是 ASP.NET?
回复 使用道具 举报
simonshen
论坛元老   /  发表于:2012-9-10 10:27:00
8#
版主您好,来源出自
  .MaxCols = .MaxCols + 1
                    Call .SetText(.MaxCols, 0,‘xxxxx’ )
            .Col = .MaxCols
            .Row = -1
            .ColWidth(.MaxCols) = SPR_TEN_WIDTH
            .BackColor = &HAAFFFF               
            .Lock = False                       
            .CellType = CellTypeFloat         
            .TypeFloatMin = 0                  
            .TypeFloatMax = 9999999            
            .TypeHAlign = TypeHAlignRight      
            .TypeFloatDecimalPlaces = 0        
            .TypeFloatSeparator = True                     
            dynaOra.MoveNext

这段代码,是VB版本的代码,不知道
.TypeFloatDecimalPlaces = 0        
            .TypeFloatSeparator = True   
.ColWidth(.MaxCols) = SPR_TEN_WIDTH

这对应在.NET版本里是应该怎么转换呢?

另外我还想追加一个问题,就是如果这些动态列生成了,那我想循环每一列,有什么代码吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-9-10 16:36:00
9#
回复 8楼simonshen的帖子

simonshen 你好,
1.Spread for .NET 6 中没有你所提供的 VB 代码中对应单元格属性。请问楼主想实现哪些功能?请提出来我们一起讨论。
2.循环列目前可以通过 for 或者 foreach。
回复 使用道具 举报
kamehameha
论坛元老   /  发表于:2012-9-13 08:25:00
10#
插个楼 问一下 有办法用js实现插入新列吗
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部