szpzr 发表于 2024-1-15 08:29:47

wpf下Flexgrid的c1comboBox列模糊查询


版主:您好,麻烦帮看下 wpf下Flexgrid的c1comboBox列模糊查询的问题:
1、Xaml设置flexgrid的列:

   <c1:C1FlexGrid.Columns>
                <c1:Column Header="姓名" HeaderHorizontalAlignment="Center">
                  <c1:Column.CellEditingTemplate>
                        <ItemContainerTemplate>
                            <c1:C1ComboBox IsEditable="True" KeyUp="UIElement_OnKeyUp" >
                            </c1:C1ComboBox>
                        </ItemContainerTemplate>
                  </c1:Column.CellEditingTemplate>
                </c1:Column>
                <c1:Column Header="代码" HeaderHorizontalAlignment="Center"></c1:Column>
            </c1:C1FlexGrid.Columns>
            <c1:C1FlexGrid.Rows>
                <c1:Row></c1:Row>
                <c1:Row></c1:Row>
            </c1:C1FlexGrid.Rows>
2、窗体构造函数 Flexgrid绑定datatable:
       //C1FlexGrid数据源
            DataTable dt = new DataTable();
            dt.Columns.Add("Name", Type.GetType("System.String"));
            dt.Columns.Add("ComList", Type.GetType("System.Int16"));
            DataRow dr = dt.NewRow();
            dt.Rows.Add(dr);
            dr = dt.NewRow();
            dt.Rows.Add(dr);
            FlexGrid.ItemsSource = dt.DefaultView;
3、窗体 的loaded事件:
      employee = new Dictionary<int, string>();
            employee.Add(1, "张三");
            employee.Add(2, "张四");
            employee.Add(3, "赵五");
            employee.Add(4, "赵六");
4、OnKeyUp事件:
   private void UIElement_OnKeyUp(object sender, KeyEventArgs e)
      {
            FlexGrid.StartEditing(true);
            var cb = sender as C1ComboBox;
            if (cb == null) return;
            if (cb.IsDropDownOpen) return;
            var name = cb.Text;
            var value = from pair in employee where pair.Value.Contains(name) select pair;
            if (value.Any())
            {
               
                cb.Items.Clear();
                foreach (var item in value)
                {
                  cb.Items.Add(item.Value);
                }
            }
            //cb.EditCompleted= true;
            //cb.Focus();
            FlexGrid.StartEditing(false);
      }      
5、单元格中输入字符:
      
但焦点离开单元格内容和查询结果消失,
      
6、查询结果出现在当前列的所有行,能否只限定在当前行?
   
      谢谢!

Richard.Ma 发表于 2024-1-15 09:25:59

关于第5步中的焦点离开单元格内容和查询结果消失,应该是你没有给姓名列绑定selectedvalue
如果需要协助调查的话,你还是上传一个完整的demo上来看看

6中的问题没有看懂。是什么意思呢?

szpzr 发表于 2024-1-15 13:11:27

Richard.Ma:

   麻烦您了!

Richard.Ma 发表于 2024-1-15 18:44:34

看了你的demo,其实你现在通过模板这种方式,又没有使用wpf的数据绑定的话,combobox和grid之间是没有任何关系的。建议你通过mvvm绑定的方式,给grid绑定数据。然后combobox也绑定到对应的数据项

类似于下图这种方式

szpzr 发表于 2024-1-16 12:41:09

好的,谢谢,我试试,有问题请教您。

Richard.Ma 发表于 2024-1-16 16:27:43

好的
页: [1]
查看完整版本: wpf下Flexgrid的c1comboBox列模糊查询