找回密码
 立即注册

QQ登录

只需一步,快速开始

Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-5-18 16:07:04
10#
嗯,有问题可用再发帖
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2021-5-18 17:38:55
11#
本帖最后由 yin_tb 于 2021-5-18 17:56 编辑

这个问题应该算BUG,我做了DEMO展现这个问题。不过跟马工学了一点,用LINQ,原来知道这个,只是项目太忙,一直没时间学习,得抽空充电了,我在项目里用了笨办法,创建列时根据是否显示累加一个值来记忆有多少列显示,呵呵。在DEMO中,我不显示中间的规格列。马老师说的对,弄DEMO最直观,咱们交流了这么多帖子,也怪我始终没有呈现问题。
基于此,目前这个问题,还是得用我开头的代码,用写的index属性比对,然后用你LINQ那段获取显示的列数比对,至少我不用自己累加显示的列数了。另外,VisibleCols属性的值不对,字面上是显示的列数,DisplayColumns.Count的值也不对,至少从字段来说,Columns.Count是总列数,DisplayColumns.Count,怎么说也是显示出来的列数吧,这也是BUG,回头我统一说吧。
等你看完附件DEMO,我再补充C1TrueDBgrid需要改善哪些东西 吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-5-18 18:07:06
12#
好的,也感谢您给我们产品提供的建议, 我验证完你的dmeo给你回复
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2021-5-18 18:15:43
13#
demo我做的很简单,DataTable的定义在program里,为了以后交流问题方便,我以后就始终用这套代码了。Form的Load事件里,手动创建了几列,隐藏【规格】列,然后绑定到DataTable,执行1加载数据,可以增行,然后回车,你能试出效果来,如果把【规格】显示出来,你会发现回车正常换行
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-5-19 00:09:58
14#
好的,明天早上验证后给你回复结果
回复 使用道具 举报
yin_tb
高级会员   /  发表于:2021-5-20 12:11:38
16#
可以了,马工,感谢。只是没想到,弄的这么复杂,要是不懂LINQ,调用Enumerable,还真搞不定。很多新手可能看半天才能明白。为了取一个当前显示的总列数,用这些方法有些复杂。我觉得对C1TrueDBGrid你得给研发提以下改进:
1、当前name是readonly的,和Caption一样,这在英文国家也还行,但在中文国家不适用,因为咱们中国人编码用英文,但显示用中文,所以,应该把它两个分开,是不同的属性。你像FlexGrid就专门有name,index,
Caption等属性,还专门有Col 和Row,调用起来方便舒服。以下datafield是绑定的列名:
虽然默许的调用Splits[0].DisplayColumn("datafield").DataColumn......或 Columns("datafield")这样也行,但总感觉很不适应,

就像上次咱们沟通单元格的锁定问题, 我开始用e.column.name="citem_no"这样,后来才想到,不能用name,因为name和Caption一样,是中文。
得改成 e.column.datacolumn.datafield.tostring() ="citem_no"
取一个简单的值,得转几转。
VS自带的DataGridView,也是美国研发吧, name和Caption分离,DGV1.CurrentROW是当前焦点行,DGV1.CurrentCell是当前单元格,DGV.DisplayColumnsCount是显示的列数,DGV.ColumnsCount是总列数,DisplayIndex是显示位置 。我也感觉C1有很多它没有的优点,但有些地方觉得麻烦,呵呵。现在基本摸清了C1TrueDBgrid的方法了,啥时用displayColumns啥时用columns,啥时要比对转换成datafield,反正是代码长。


2、封装多加几个属性,把咱们用LINQ获取的,直接封装成属性。虽然我自己现在准备这样做,但标准产品那样其它用户调用起来方便。


3、还有个BUG,我抽空在DEMO里呈现,就是当前网格绑定到了datatable,正在编辑模式,如果从数据库中读取格式数据,清除所有列,重新创建列,按新布局排列,再绑定到当前正在编辑的datatable,有时,网格里会变成红X号,应该是因为刷新的问题,或是fetchstyle啥原因。
临时就说这些吧,费点事功能也都差不多了。




评分

参与人数 1金币 +1000 收起 理由
Richard.Ma + 1000 感谢提供产品改进建议

查看全部评分

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-5-20 14:17:21
17#
好的,有新的bug欢迎再发新帖。也感谢提供产品改进建议
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部