找回密码
 立即注册

QQ登录

只需一步,快速开始

shayne
论坛元老   /  发表于:2014-3-27 11:40  /   查看:5948  /  回复:12
如何在后台为表格的列设置列类型,winform的有个ComboList方法,WPF的如何处理?

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

12 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-3-27 16:06:00
沙发
回复 1楼shayne的帖子

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

本帖子中包含更多资源

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

x
回复 使用道具 举报
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讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-15 12:00:59
地板
PreviewTextInput事件的args参数中本身就没有Editor属性的。所以没法获取

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



本帖子中包含更多资源

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

x
回复 使用道具 举报
szpzr
高级会员   /  发表于:2024-3-15 12:34:16
5#
还是想使用 ComboBox实现模糊查询,使用模板没有得到预期效果,想换个方式试试,用语句:cmb.IsDropDownEnabled = true;
                cmb.IsDroppedDown = true;下拉列表无法展开的原因在哪里?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-15 15:44:51
6#
你可以在获取焦点事件中加上代码

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

  8.                 C1.WPF.FlexGrid.C1FlexComboBox cmb = ((C1.WPF.FlexGrid.C1FlexComboBox)(_border.Child));
  9.                 cmb.DropDownItems = new string[] { "Assigned", "Remove", "- -" };
  10.                 cmb.IsEditable = false;
  11.                 cmb.GotFocus += (s, ee) =>
  12.                 {
  13.                     if (!cmb.IsDroppedDown)
  14.                     {
  15.                         cmb.IsDroppedDown = true;
  16.                     }
  17.                 };
  18.                 cmb.LostFocus += (s, ee) =>
  19.                 {
  20.                     if (cmb.IsDroppedDown)
  21.                     {
  22.                         cmb.IsDroppedDown = false;
  23.                     }
  24.                 };
  25.             }
  26.         }
复制代码
回复 使用道具 举报
szpzr
高级会员   /  发表于:2024-3-15 16:37:54
7#
好的,谢谢
回复 使用道具 举报
szpzr
高级会员   /  发表于:2024-3-15 16:39:38
8#
后面不能使用 var str = FlexGrid1[row, col];获取选中值,该如何获取?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-15 18:23:29
9#
没有明白你的意思,是在什么时候无法获取,你是用上面的代码会报错吗?
回复 使用道具 举报
szpzr
高级会员   /  发表于:2024-3-15 19:34:51
10#
本帖最后由 szpzr 于 2024-3-16 09:41 编辑


C1.WPF.FlexGrid.C1FlexComboBox cmb = ((C1.WPF.FlexGrid.C1FlexComboBox)(_border.Child));语句后使用   string txt= cmb.Text;     无法获取输入值。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部