szpzr 发表于 2021-2-28 10:51:01

Spread的ComboxTypeCell单元格模糊输入

版主:
   Win 下 Spread10的ComboxTypeCell单元格模糊输入有好的解决办法码?

Richard.Ma 发表于 2021-2-28 21:09:32

问题已经收到,明天验证后给你回复

szpzr 发表于 2021-3-2 07:25:43

Richard.Ma:
    您好,应用上急需实现这个功能,请帮提供下帮助,谢谢!
   

Richard.Ma 发表于 2021-3-2 09:20:54

你好,昨天帮你验证了一下,这个目前没有办法完全实现,
但是Spread 的ComboxTypeCell提供了这两个属性,可以基本实现你需要的功能,
可以模糊筛选出数据,但是需要鼠标点击确认,不能在筛选出的数据上按方向键来选择,否则筛选列表会消失


szpzr 发表于 2021-3-2 13:41:42

我是希望通过数据库查询结果添加到下拉列表中供选择,能否有自定义控件的办法实现?啊能提供下这方面的demo或参考!谢谢!

Richard.Ma 发表于 2021-3-2 15:36:05

如果是要绑定一个datatable 的话,可以使用MultiColumnComboBoxCellType
以及你需要的模糊查询功能,也可以在此基础上扩展
自定义单元格类型继承此类型,下面有一个参考代码,注意:因为此类型还是会自动填充单元格中的数据,因此无法完全实现模糊搜索,仅能首字母搜索



使用自定义类型
fpSpread1.ActiveSheet.Cells.CellType = new FilterComboCellType(datatable dt) ;


自定义类型
    public class FilterComboCellType: FarPoint.Win.Spread.CellType.MultiColumnComboBoxCellType
    {
      DataTable dt;
      public FilterComboCellType(DataTable dt)
      {
            
            this.EditorValueChanged += FilterComboCellType_EditorValueChanged;
            this.DataSourceList = dt;
            this.AutoSearch =FarPoint.Win.AutoSearch.SingleCharacter;

            this.DataColumn = 1;
            this.ColumnEdit = 1;
            this.ButtonAlign = FarPoint.Win.ButtonAlign.Right;
            this.ListAlignment = FarPoint.Win.ListAlignment.Right;
            this.ListWidth = 500;
            this.ListOffset = 5;
            this.MaxDrop = 5;
            this.dt = dt;
      }

      private void FilterComboCellType_EditorValueChanged(object sender, EventArgs e)
      {
            if (this.GetEditorValue() == null || string.IsNullOrEmpty(this.GetEditorValue().ToString()))
            {
                this.DataSourceList = dt;
                return;
            }
            string condition = dt.Columns.ColumnName + " like '%"+this.GetEditorValue()+"%'";
            DataTable newdt = new DataTable();
            newdt = dt.Clone();
            DataRow[] dr = dt.Select(condition);
            for (int i = 0; i < dr.Length; i++)
            {
                newdt.ImportRow((DataRow)dr);
            }
            this.DataSourceList = newdt;
      }
    }

szpzr 发表于 2021-3-2 15:48:37

好的,谢谢!我试试。

Richard.Ma 发表于 2021-3-2 15:57:46

不客气

szpzr 发表于 2023-11-26 15:23:35

博主:您好!下列代码中如何设置记录条目和行间距?
comboBoxType.Items = items;
                  comboBoxType.MaxDrop = items.Length;
                  cbo.ListControl.Items.Clear();
                  cbo.ListControl.Items.AddRange(items);
                  cbo.ShowList(true);
                  cbo.SelectedItem = null;

Richard.Ma 发表于 2023-11-27 12:26:13

行间距不支持设置

另外,没明白你说的如何设置记录条目,如果你是意思就是设置下拉选项的化,需要同时设置
ItemData和Items,前者是存储的值列表,后者是显示的值列表,一一对应。
页: [1]
查看完整版本: Spread的ComboxTypeCell单元格模糊输入