shayne 发表于 2014-3-27 11:40:00

C1 WPF FlexGrid 后台设置列类型

如何在后台为表格的列设置列类型,winform的有个ComboList方法,WPF的如何处理?

例如新增一行数据,第二列的类型是ComboBox,如何后台设置。如何绑定数据。

iceman 发表于 2014-3-27 16:06:00

回复 1楼shayne的帖子

可以通过   C1.WPF.FlexGrid.C1FlexComboBox 来实现,请参考 Demo:

szpzr 发表于 2024-3-15 08:30:55

本帖最后由 szpzr 于 2024-3-15 09:07 编辑

版主,示例代码可以在FlexGrid1_PreviewTextInput事件中如何实现?
var edit = e.Editor as System.Windows.FrameworkElement; 的 edit 如何获取?

另外:FlexGrid1_PrepareCellForEdit事件中单元格输入内容时能自动展开下拉列表吗?
用语句:cmb.IsDropDownEnabled = true;
                cmb.IsDroppedDown = true;
             无法实现。

谢谢!


Richard.Ma 发表于 2024-3-15 12:00:59

PreviewTextInput事件的args参数中本身就没有Editor属性的。所以没法获取

你现在具体是什么需求?,wpf中最简单的方式应该是你直接在xaml中给列来设置template



szpzr 发表于 2024-3-15 12:34:16

还是想使用 ComboBox实现模糊查询,使用模板没有得到预期效果,想换个方式试试,用语句:cmb.IsDropDownEnabled = true;
                cmb.IsDroppedDown = true;下拉列表无法展开的原因在哪里?

Richard.Ma 发表于 2024-3-15 15:44:51

你可以在获取焦点事件中加上代码

      private void Grid1_PrepareCellForEdit_1(object sender, C1.WPF.FlexGrid.CellEditEventArgs e)
      {
            if ((e.Column > 1))
            {
                Border _border;
                var edit = e.Editor as System.Windows.FrameworkElement;
                _border = edit as System.Windows.Controls.Border;

                C1.WPF.FlexGrid.C1FlexComboBox cmb = ((C1.WPF.FlexGrid.C1FlexComboBox)(_border.Child));
                cmb.DropDownItems = new string[] { "Assigned", "Remove", "- -" };
                cmb.IsEditable = false;
                cmb.GotFocus += (s, ee) =>
                {
                  if (!cmb.IsDroppedDown)
                  {
                        cmb.IsDroppedDown = true;
                  }
                };
                cmb.LostFocus += (s, ee) =>
                {
                  if (cmb.IsDroppedDown)
                  {
                        cmb.IsDroppedDown = false;
                  }
                };
            }
      }

szpzr 发表于 2024-3-15 16:37:54

好的,谢谢

szpzr 发表于 2024-3-15 16:39:38

后面不能使用 var str = FlexGrid1;获取选中值,该如何获取?

Richard.Ma 发表于 2024-3-15 18:23:29

没有明白你的意思,是在什么时候无法获取,你是用上面的代码会报错吗?

szpzr 发表于 2024-3-15 19:34:51

本帖最后由 szpzr 于 2024-3-16 09:41 编辑


C1.WPF.FlexGrid.C1FlexComboBox cmb = ((C1.WPF.FlexGrid.C1FlexComboBox)(_border.Child));语句后使用   string txt= cmb.Text;   无法获取输入值。
页: [1] 2
查看完整版本: C1 WPF FlexGrid 后台设置列类型