找回密码
 立即注册

QQ登录

只需一步,快速开始

yuhang666

注册会员

17

主题

57

帖子

164

积分

注册会员

积分
164
yuhang666
注册会员   /  发表于:2017-9-11 15:49  /   查看:9648  /  回复:12
您好:

求助一下
版本:Spread For Wpf 1.0J,WPF部分使用了MVVM架构

问题描述: Spread列头追加了排序和过滤功能,数据绑定到了list上(ItemsSource="{Binding Models, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"),数据绑定时根据行数据某个字段的值,设置当前行背景色和可用性(Lock)

        private ObservableCollection<SeikyuDataModel> models;
        public ObservableCollection<SeikyuDataModel> Models
        {
            get
            {
                return models;
            }
            set
            {
                SetProperty(ref models, value);
            }
        }

求助内容:

1.点击排序以后,一览中的数据被排序了,当时设置的背景色和可用性并不能随时数据的位置变化而变化,如初始化的时候第二行背景红色,Lock=True,排序后移动到第五行,但是第二行还是背景红色,Lock=True,应该如何处理?

2.点击过滤,画面数据被过滤了,但绑定的Models中还是所有的数据,并不是过滤后的数据。希望能取得过滤后的数据,应该如何处理?

以上两个问题,困扰很久了,
非常感谢!

12 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-9-11 17:18:24
沙发
您好,第一个问题我这里需要验证下。
第二个是正常的,因为数据源是没有变化的,只是有些行是被隐藏了。
现在没有接口获取所有过滤后的数据。
可以通过RowFilter属性 IsRowFilteredOut方法判断行是否被过滤了
回复 使用道具 举报
yuhang666
注册会员   /  发表于:2017-9-11 18:30:08
板凳
dexteryao 发表于 2017-9-11 17:18
您好,第一个问题我这里需要验证下。
第二个是正常的,因为数据源是没有变化的,只是有些行是被隐藏了。
...

非常感谢!

关于Filter的问题,主要的困惑是,
Spread每行都有一个checkbox,当过滤以后,有些行checkbox选中的,但并不显示,由于数据源没有改变,所以还是被提交到后台了
Filter的时候,会触发什么事件?我看看能不能在该事件中做点文章

期待排序问题能有好的解决方案
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-9-12 09:03:51
地板
您好,spread的排序是对Range的排序,我这里猜测您有背景色的那个单元格并没有在排序的Range之中。
如果不是我的猜测可否提供下重现Demo。 我这里测试没有重现问题。

过滤后会触发事件gcSpreadSheet1.RangeFiltered
回复 使用道具 举报
yuhang666
注册会员   /  发表于:2017-9-12 09:45:21
5#
dexteryao 发表于 2017-9-12 09:03
您好,spread的排序是对Range的排序,我这里猜测您有背景色的那个单元格并没有在排序的Range之中。
如果不 ...

我再调查下,因为是项目代码,涉及信息安全,不能随便贴出来,
如果还不行,我做个简单的sample再请教,
非常感谢!
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-9-12 11:03:03
6#
好的,您再试试,能重现问题的sample就可以。
回复 使用道具 举报
yuhang666
注册会员   /  发表于:2017-9-12 11:04:45
7#
dexteryao 发表于 2017-9-12 09:03
您好,spread的排序是对Range的排序,我这里猜测您有背景色的那个单元格并没有在排序的Range之中。
如果不 ...

我们用的是GcSpreadGrid,没有RangeFilterEd事件啊
回复 使用道具 举报
yuhang666
注册会员   /  发表于:2017-9-12 11:08:46
8#
dexteryao 发表于 2017-9-11 17:18
您好,第一个问题我这里需要验证下。
第二个是正常的,因为数据源是没有变化的,只是有些行是被隐藏了。
...

也没有RowFilter属性啊
<sg:GcSpreadGrid Name="GcSeikyuFiles" ItemsSource="{Binding Models, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="10"
                                     SelectionUnit="Row" SelectionPolicy="Single"
                                     Background="Transparent"
                                     BorderBrush="Transparent"
                                     AutoGenerateColumns="False" DocumentUri="/DensoWPF;component/document16.sgxml"
/>
回复 使用道具 举报
yuhang666
注册会员   /  发表于:2017-9-12 11:14:16
9#
dexteryao 发表于 2017-9-11 17:18
您好,第一个问题我这里需要验证下。
第二个是正常的,因为数据源是没有变化的,只是有些行是被隐藏了。
...

项目用的版本是Spread For Wpf 1.0J,并且是GcSpreadGrid,不是gcSpreadSheet,我没找到你说的属性和事件
回复 使用道具 举报
yuhang666
注册会员   /  发表于:2017-9-12 13:42:18
10#
好,我总结一下上面的问题,
首先需要注意的是,项目用的版本是Spread For Wpf 1.0J,并且是GcSpreadGrid,不是gcSpreadSheet
所以下面说的这些属性、事件根本就没有,我查了该版本的帮助文档,也没有找到上面给出的属性和事件

过滤后会触发事件gcSpreadSheet1.RangeFiltered
可以通过RowFilter属性 IsRowFilteredOut方法判断行是否被过滤了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部