找回密码
 立即注册

QQ登录

只需一步,快速开始

lh8350

论坛元老

33

主题

80

帖子

2万

积分

论坛元老

积分
23275

活字格认证

lh8350
论坛元老   /  发表于:2012-7-11 13:33  /   查看:6243  /  回复:3
spread控件能不能实现组合筛选,筛选符合几个列的条件的特定数据,可以办的到吗?求解!还有,怎么获取用鼠标选取的单元格的范围啊?

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-11 14:29:00
沙发
通过AllowAutoFilter属性可以设置某列是否可以进行过滤:
  1. fpSpread1.ActiveSheet.Columns[0,2].AllowAutoFilter = true;
复制代码


通过GetSelections()或者GetSelection()可疑取到选中的单元格范围:
  1. fpSpread1.ActiveSheet.GetSelection()
  2. fpSpread1.ActiveSheet.GetSelections()
复制代码
回复 使用道具 举报
lh8350
论坛元老   /  发表于:2012-7-11 16:04:00
板凳
1)可能我没有描述清楚我是想实现多列组合进行数据筛选。比如一行中有姓名,年龄,性别等,我想筛选出性别为女的,年龄为20的数据,要怎样做才可以

2)我想实现按enter键的时候,单元格自动下移,下移后不选中单元格中的内容,内容也不可编辑,单元格周围只显示一个选取到的黑框。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-11 16:53:00
地板
问题一:
  1.     private void Form1_Load(object sender, EventArgs e)
  2.     {            
  3.         DataTable dt = new DataTable();
  4.         dt.Columns.Add("姓名");
  5.         dt.Columns.Add("年龄");
  6.         dt.Columns.Add("性别");

  7.         dt.Rows.Add("AAA", "20", "女");
  8.         dt.Rows.Add("AAA", "20", "男");
  9.         dt.Rows.Add("AAA", "22", "女");
  10.         dt.Rows.Add("AAA", "23", "女");
  11.         dt.Rows.Add("AAA", "24", "女");

  12.         fpSpread1.ActiveSheet.DataSource = dt;
  13.         fpSpread1.ActiveSheet.Columns[0, 2].AllowAutoFilter = true;
  14.     }

  15.     private void 过滤ToolStripMenuItem_Click(object sender, EventArgs e)
  16.     {
  17.         fpSpread1.ActiveSheet.AutoFilterColumn(1, "20", 1);
  18.         fpSpread1.ActiveSheet.AutoFilterColumn(2, "女", 1);
  19.     }
复制代码


问题二,可以通过InputMap来实现:
  1.     FarPoint.Win.Spread.InputMap im = new FarPoint.Win.Spread.InputMap();

  2.     im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  3.     im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);

  4.     im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  5.     im.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextRow);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部