Daoting / dt

利用 C# + XAML 进行快速业务开发的跨平台框架(搬运工)
https://github.com/daoting/dt
56 stars 13 forks source link

当CList 处于编辑模式下,是否可以增加用户过滤事件,便于定制筛选条件 #87

Closed sunl158 closed 1 year ago

sunl158 commented 1 year ago

protected override void OnApplyCellTemplate() { base.OnApplyCellTemplate(); _grid = (Grid)GetTemplateChild("Grid"); if (_grid == null) return; if (!IsEditable) return; TextBox tb = _grid.FindChildrenByType().First(); if (tb==null) return; tb.KeyUp+=Tb_KeyUp; }

Daoting commented 1 year ago

编辑模式的用途是可以任意填写和下拉选项不同的内容,若用于动态过滤下拉选项,如何区分?

是类似这种过滤效果? image

sunl158 commented 1 year ago

可以设定额外一个选项 ReadOnly (TextBlock) IsEditable(TextBox) UserFillterMode (TextBox.Text 是过滤条件), 通常有下拉选择时,不允许用户填写任意值;

From: Daoting @.> Sent: Thursday, December 1, 2022 4:46 PM To: Daoting/dt @.> Cc: sunl158 @.>; Author @.> Subject: Re: [Daoting/dt] 当CList 处于编辑模式下,是否可以增加用户过滤事件,便于定制筛选条件 (Issue #87)

编辑模式的用途是可以任意填写和下拉选项不同的内容,若用于动态过滤下拉选项,如何区分?

— Reply to this email directly, view it on GitHubhttps://github.com/Daoting/dt/issues/87#issuecomment-1333412486, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADNTU3SHIJ5F7HMNGXINYUDWLBQWFANCNFSM6AAAAAASQMDGTI. You are receiving this because you authored the thread.Message ID: @.**@.>>

Daoting commented 1 year ago

推荐一下相似功能的控件,编辑和动态过滤都需要时怎么处理 ?

”有下拉选择时,不允许用户填写任意值“会使用户非常困惑,下拉选项里有“ABC”,想填AB或ABCD怎么处理?

业务系统倒是有按数字快捷键选的,一般选项少频繁使用。

sunl158 commented 1 year ago

通常,下拉框在系统中,对应了一个表,相当于Key-Description-Value的关系 在下拉框旁边,一般会配置一个管理按钮,可以跳转到管理界面进行增加,然后下拉框就增加了,可以选择了。 通常下拉框是不允许普通用户新增加的,也不允许在对应位置,随意填写内容。 观点:禁用编辑,改为过滤。编辑的目的,仅仅为了过滤条件 比如,在右上角有个按钮,点击,所有的下拉框就会显示出管理功能来,点击会进入管理界面 回到这个界面,再次点击,就会增加了。 通常下拉框不会频繁增加内容,若是可以随意修改,那是备注类型的 @.***

From: Daoting @.> Sent: Tuesday, December 6, 2022 8:24 AM To: Daoting/dt @.> Cc: sunl158 @.>; Author @.> Subject: Re: [Daoting/dt] 当CList 处于编辑模式下,是否可以增加用户过滤事件,便于定制筛选条件 (Issue #87)

推荐一下相似功能的控件,编辑和动态过滤都需要时怎么处理 ?

”有下拉选择时,不允许用户填写任意值“会使用户非常困惑,下拉选项里有“ABC”,想填AB或ABCD怎么处理?

业务系统倒是有按数字快捷键选的,一般选项少频繁使用。

— Reply to this email directly, view it on GitHubhttps://github.com/Daoting/dt/issues/87#issuecomment-1338480442, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADNTU3WYSDAAWH54XBJGJDDWL2BTRANCNFSM6AAAAAASQMDGTI. You are receiving this because you authored the thread.Message ID: @.**@.>>

Daoting commented 1 year ago

这个功能挺好,早期dephi VB PB开发时就有类似功能。

但这只是众多使用场景的一个,没有一招鲜吃遍天的,即使有也轮不到咱们去完成。 比如:

  1. 枚举类型,经常用数值类型的字段存储一个固定分类,比如 “0:一组用户 1:所有用户 2:单个用户 3:任一用户”,前端UI下拉显示的是文字,程序中定义对应的枚举类型,查询、保存、序列化、反序列化时Row的Cell中始终是枚举类型,业务判断非常方便。
  2. 办公系统中动态下拉内容非常受欢迎,比如“事由"下拉框显示的是曾经填过的事由的distinct,若下拉没有可以自由编辑,保存后就可再次使用。 。。。

这些情况用以上管理的方法也能实现,太过牵强,带来新问题:选项版本的同步、选项数据和代码的同步等等,简单的问题复杂化,最大的缺点就是只能用固定的方法取数据,写死了。

CList里也有相似功能,使用 Option 属性指定分组名称,通常是地区、性别、学历等字典数据,可以维护。 数据来自库表cm_option,生成客户端缓存时保存在model.db中,登录后打开样例可以看到,单独启动样例时无网络连接所以下拉无内容,: image 这种情况的缺点和以上相同,取数据的方法写死了。

搜索框方案: 可以在下拉对话框顶部添加搜索框,编辑搜索两不误,不编辑时将搜索框上窜到编辑位置,用户无觉察,关键可以跨平台使用,先按照这个思路实现一下。