Closed sunl158 closed 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: @.**@.>>
推荐一下相似功能的控件,编辑和动态过滤都需要时怎么处理 ?
”有下拉选择时,不允许用户填写任意值“会使用户非常困惑,下拉选项里有“ABC”,想填AB或ABCD怎么处理?
业务系统倒是有按数字快捷键选的,一般选项少频繁使用。
通常,下拉框在系统中,对应了一个表,相当于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: @.**@.>>
这个功能挺好,早期dephi VB PB开发时就有类似功能。
但这只是众多使用场景的一个,没有一招鲜吃遍天的,即使有也轮不到咱们去完成。 比如:
这些情况用以上管理的方法也能实现,太过牵强,带来新问题:选项版本的同步、选项数据和代码的同步等等,简单的问题复杂化,最大的缺点就是只能用固定的方法取数据,写死了。
CList里也有相似功能,使用 Option 属性指定分组名称,通常是地区、性别、学历等字典数据,可以维护。
搜索框方案: 可以在下拉对话框顶部添加搜索框,编辑搜索两不误,不编辑时将搜索框上窜到编辑位置,用户无觉察,关键可以跨平台使用,先按照这个思路实现一下。
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;
}