找回密码
 立即注册

QQ登录

只需一步,快速开始

村东智叟
初级会员   /  发表于:2021-4-5 10:53  /   查看:4740  /  回复:11
您好:
我想实现这个功能,在程序运行的时候,点击列固定按钮。
可以将前面四列变成固定的列,不随滚动条滚动。后面的列随滚动条滚动。
我目前采用的方法是直接在按钮的点击事件中,将Cols.Fixed = 4来设置更改固定列的数量。
但是这样操作会导致系统直接在grid中增加了四个固定的列而不是将前面的四个列变成固定列。
请问这个如何实现。
目前采用的数据绑定的方法是SortableBindingLIst


本帖子中包含更多资源

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

x

11 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-6 08:59:01
沙发
本帖最后由 Richard.Ma 于 2021-4-6 09:28 编辑

你需要的实际上是冻结行,在xaml或者后台代码中设置如下属性即可
  1. FrozenColumns="3"
复制代码


回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-6 09:38:40
板凳
Richard.Ma 发表于 2021-4-6 08:59
你需要的实际上是冻结行,在xaml或者后台代码中设置如下属性即可

您好,
感谢您的回复。
我没有表述清楚。
不是冻结列,是固定列。(冻结列只是列冻结了不随滚动条滚动,不是我想要实现的功能)
实际上我要固定的这些列不仅是不随滚动条滚动。而且设置在这些列上的事件也不能被使用。
背景也改变,即使是行选择模式下,也不会有光标。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-6 10:55:28
地板
抱歉,目前无法实现在固定列中绑定数据
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-6 11:10:06
5#
Richard.Ma 发表于 2021-4-6 10:55
抱歉,目前无法实现在固定列中绑定数据

您好:
感谢您的回答。
那么使用冻结列的情况下,
如何让冻结列上面的事件不触发,比如单元格的编辑事件,表头的排序事件等等,所有的事件都无法触发。这个怎么实现?
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-6 11:14:05
6#
在行选择模式下,冻结列没有选中的背景怎么实现?

本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-6 11:52:16
7#
目前确实应该通过这种思路来实现,我验证后给你回复
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-8 10:06:21
8#
Richard.Ma 发表于 2021-4-6 11:52
目前确实应该通过这种思路来实现,我验证后给你回复

您好,
以防万一,目前的进度共享给您。
目前提出的需求,按照您这边的方案就本上都实现了。
但是在行选择模式下,选中行的冻结列没有背景色目前无法实现。
还有,如果冻结列上有双击事件,这一行也有双击事件。在冻结行列的情况下,双击该列的单元格设置为不触发列上的事件,改行的行事件也无法触发了。。。
回复 使用道具 举报
村东智叟
初级会员   /  发表于:2021-4-8 10:17:22
9#
村东智叟 发表于 2021-4-8 10:06
您好,
以防万一,目前的进度共享给您。
目前提出的需求,按照您这边的方案就本上都实现了。

大概是这种需求

本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-4-8 11:14:30
10#
你说的冻结列再选中行的情况下仍然保存本来的样式,可以通过在OwnerDrawCell事件中加如下代码实现,需要注意的是需要将DrawMode属性设置为onwerdraw
  1.             if (e.Col < 3)
  2.             {
  3.                 e.Style = c1FlexGrid2.Styles.Frozen;
  4.             }
复制代码


另外为了让冻结列和固定列样式一致,可以直接将冻结列的样式进行设置,通过设计器或者代码都行,代码的话就是1FlexGrid2.Styles.Frozen的具体样式属性设置

你提到的冻结列上有双击事件,这一行也有双击事件,这个我不太明白,一般来说是通过
c1FlexGrid2.DoubleClick += C1FlexGrid2_DoubleClick;
这个事件来处理,在其中判断点击的是哪个单元格,如下代码即可实现,只有点击后面非冻结列时,才执行代码
  1.         private void C1FlexGrid2_DoubleClick(object sender, EventArgs e)
  2.         {
  3.             if (c1FlexGrid2.HitTest().Column > 2)
  4.             {
  5.                 MessageBox.Show("执行方法");
  6.             }
  7.         }
复制代码



本帖子中包含更多资源

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

x

评分

参与人数 1满意度 +5 收起 理由
村东智叟 + 5

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部