public void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("年龄");
dt.Columns.Add("性别");
dt.Rows.Add("AAA", "20", "女");
dt.Rows.Add("fff", "20", "女");
dt.Rows.Add("rr", "20", "女");
dt.Rows.Add("bbb", "20", "男");
dt.Rows.Add("op", "20", "男");
dt.Rows.Add("opo", "20", "男");
dt.Rows.Add("ccc", "22", "女");
dt.Rows.Add("ddd", "23", "女");
dt.Rows.Add("eee", "24", "女");
fpSpread1.ActiveSheet.DataSource = dt;
fpSpread1.ActiveSheet.Columns[0, 2].AllowAutoFilter = true;
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请您输入您要选择的年龄");
return;
}
else
{
fpSpread1.ActiveSheet.AutoFilterColumn(1, textBox1.Text, 1);
if (textBox2.Text == "")
{
return;
}
else
{
fpSpread1.ActiveSheet.AutoFilterColumn(2, textBox2.Text, 1);
}
}
}
1)我是这样写的。但是存在的问题是,如果我先选的年龄为20,性别为空,会全部选出来。但是如果我先选年龄为20,性别为男的,可以选出所有20的男,如果在此基础上再选只是年龄为20的,就不出来包含男女的最初的数据了。这个筛选只是针对当前筛选后的spread表格,怎样才能回到最初,选择20岁,能出来所有20岁的同学呢,包含男的和女的。
2)还有一个问题,如果我把这个筛选做成右键菜单,是筛选右键点击的所在列的一定范围内的值该怎么实现呢?不好意思,因为初学,所以可能问题有些含糊不清,抱歉! |