找回密码
 立即注册

QQ登录

只需一步,快速开始

szpzr

高级会员

138

主题

552

帖子

1754

积分

高级会员

积分
1754

活字格认证

szpzr
高级会员   /  发表于:2024-1-15 08:29  /   查看:954  /  回复:5

版主:您好,麻烦帮看下 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、查询结果出现在当前列的所有行,能否只限定在当前行?
   
      谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-15 09:25:59
沙发
关于第5步中的焦点离开单元格内容和查询结果消失,应该是你没有给姓名列绑定selectedvalue
如果需要协助调查的话,你还是上传一个完整的demo上来看看

6中的问题没有看懂。是什么意思呢?
回复 使用道具 举报
szpzr
高级会员   /  发表于:2024-1-15 13:11:27
板凳
Richard.Ma

     麻烦您了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-15 18:44:34
地板
看了你的demo,其实你现在通过模板这种方式,又没有使用wpf的数据绑定的话,combobox和grid之间是没有任何关系的。建议你通过mvvm绑定的方式,给grid绑定数据。然后combobox也绑定到对应的数据项

类似于下图这种方式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
szpzr
高级会员   /  发表于:2024-1-16 12:41:09
5#
好的,谢谢,我试试,有问题请教您。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-16 16:27:43
6#
好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部