找回密码
 立即注册

QQ登录

只需一步,快速开始

withsmile

初级会员

21

主题

50

帖子

319

积分

初级会员

积分
319

活字格认证

withsmile
初级会员   /  发表于:2014-8-5 16:46  /   查看:6417  /  回复:4
我想用C1FlexGrid做一个条件筛选的窗口。

  1. Dictionary<int, string> titles = new Dictionary<int, string>();
  2.                 titles.Add(1, "编号");
  3.                 titles.Add(2, "是否启用");
  4. c1FlexGridQuery.Cols[1].DataMap = titles;

  5. Dictionary<int, string> id = new Dictionary<int, string>();
  6.                 id.Add(1, "一号");
  7.                 id.Add(2, "二号");
  8.                 id.Add(3, "三号");
  9.                 id.Add(4, "四号");
  10. c1FlexGridQuery.Cols[2].DataMap = id;

  11. Dictionary<int, string> isEnabled= new Dictionary<int, string>();
  12.                 isEnabled.Add(1, "启用");
  13.                 isEnabled.Add(2, "禁用");
  14. c1FlexGridQuery.Cols[2].DataMap = isEnabled;
复制代码

同在第一行,我在第一列选了“编号”,第二列下拉就有“一号”,“二号”,“三号”,“四号”可选;
同在第二行,我在第一列选了“是否启用”,第二列下拉就有“启用”,“禁用”可选。

我可以对C1FlexGrid的同一个数据列赋值多个DataMap吗?这个想法可以实现吗?

4 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-8-6 09:32:00
沙发
回复 1楼withsmile的帖子

应该可以实现。
C1FlexGrid在进入编辑状态的情况下,可以获取Editor,然后挂这个Editor的相应事件,比如SelectedItemChanged的事件。触发这个事件的时候去判断选择的是哪个值,然后对另一列的值做相应的改变。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
withsmile
初级会员   /  发表于:2014-8-6 09:52:00
板凳
回复 1楼withsmile的帖子

应该可以实现。
C1FlexGrid在进入编辑状态的情况下,可以获取Editor,然后挂这个Editor的相应事件
Alice 发表于 2014-8-6 9:32:00


判断选择的是哪个值,然后对另一列的值做相应的改变,我已经通过CellChanged和Switch基本实现了,但是剩下的问题是
  1. c1FlexGridQuery.Cols[2].DataMap = id;
复制代码
  1. c1FlexGridQuery.Cols[2].DataMap = isEnabled;
复制代码

同一列的DataMap被第二次赋值后,原本第一行的DataMap也同时被变掉了。

针对一个单元格可以单独设置DataMap吗?或者有别的巧思妙想?

我不太理解“获取Editor,然后挂这个Editor的相应事件”这句话,没有找到SelectedItemChanged事件。
回复 使用道具 举报
withsmile
初级会员   /  发表于:2014-8-6 16:16:00
地板
我通过设置多个CellStyle,在CellChanged事件触发时,针对不同的单元格使用方法SetCellStyle(row,col,cellstyle)设置单元格风格,实现了多条件筛选的想法。

  1. CellStyle cs_sID = c1flexgrid.Styles.Add(&quot;Text1&quot;);
  2.             cs_sID.DataType = typeof(int);
  3.             cs_sID.DataMap = dic_sID;
  4. CellStyle cs_sisEnabled = c1flexgrid.Styles.Add(&quot;Combostyle1&quot;);
  5.             cs_sisEnabled.DataType = typeof(bool);
  6.             cs_sisEnabled.DataMap = dic_sisEnabled;
复制代码

  1. switch (c1FlexGridQuery.Selection.DataDisplay) {
  2.             case &quot;编号&quot;:
  3.                    c1FlexGridQuery.SetCellStyle(r1, 1, cs_sID);
  4.                    c1FlexGridQuery.SetCellStyle(r1, 2, cs_vID);
  5.                    break;
  6.             case &quot;是否启用&quot;:
  7.                    c1FlexGridQuery.SetCellStyle(r1, 1, cs_sisEnabled);
  8.                    c1FlexGridQuery.SetCellStyle(r1, 2, cs_visEnabled);
  9.                    break;
  10.             default:break;
  11. }
复制代码




本帖子中包含更多资源

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

x

评分

参与人数 1金币 +300 收起 理由
Alice + 300 反馈解决方案。

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-8-6 18:12:00
5#
我通过设置多个CellStyle,在CellChanged事件触发时,针对不同的单元格使用方法SetCellStyle(row,col,cellstyle)设置单元格风格,实现了多条件筛选的想法。
[code]
CellStyle cs_sID = c1flexgrid.Styles.Add(&quot;Text1&quot;);
            cs_sID.DataType =
withsmile 发表于 2014-8-6 16:16:00


解决问题并提供反馈,奖金300金币。参考:金币奖励
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部