找回密码
 立即注册

QQ登录

只需一步,快速开始

yiitht
论坛元老   /  发表于:2012-5-16 14:50  /   查看:6222  /  回复:7
为什么我的代码中dataset.Tables["employee"].AcceptChanges();这句执行后,会改变Spread的表头样式设置,比如sheetview的列宽等设置?

7 个回复

倒序浏览
yiitht
论坛元老   /  发表于:2012-5-16 14:54:00
沙发
public override bool SaveData() //保存
        {
            fpSpread1.EditMode = false;//保存前先取消单元格的编辑状态
            WriteDb();
            ds.Tables[tName].AcceptChanges();
            return true;
        }

比如我执行了这个函数之后,SheetView之前设置的列宽等属性全都丢失了,有人遇到过吗?怎么回事呢?
回复 使用道具 举报
yiitht
论坛元老   /  发表于:2012-5-16 14:57:00
板凳
我用的Spread 4.0.2022.2005,WinForm的.
数据源与控件是绑定的。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-16 15:12:00
地板

回复 3# yiitht 的帖子

你可以尝试进行以下属性设置:
  1. fpSpread1.ActiveSheet.DataAutoSizeColumns = false;
复制代码
回复 使用道具 举报
yiitht
论坛元老   /  发表于:2012-5-16 16:01:00
5#
谢谢 dof,
使用你说的 fpSpread1.ActiveSheet.DataAutoSizeColumns = false; 后,列宽是不会出问题了;
但是列类型还是有问题,即
本来是组合框ComboBoxCellType类型的列,变成了文本框TextCellType类型的列。

问题的本质好像没解决,就是为什么dataset会改变SheetView的外观呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-16 16:15:00
6#
如果你通过代码指定的CellType可以结合下面两个属性设置:
  1.     fpSpread1.ActiveSheet.DataAutoSizeColumns = false;
  2.     fpSpread1.ActiveSheet.DataAutoCellTypes = false;
复制代码
回复 使用道具 举报
yiitht
论坛元老   /  发表于:2012-5-16 16:42:00
7#
问题解决了,非常感谢dof,谢谢!

顺便问一下,这是Spread的Bug吗?我在.net的DataGridView中试了同样的情况,没有发生本帖中出现的问题。呵呵。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-16 17:15:00
8#
这是Spread本身的设计,Spread通过暴露一些属性给用户,让用户自己决定需要哪种行为。哈哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部