eclipse中ViewerFilter实现过滤数据
1、如果不熟悉这个TableViewer控件时,看看我以前的经验讲的TableViewer用法。
打开这个vpshangpinxinxi.java,在这个文件中定义过滤的类。
2、继承ViewerFilter定义一个过滤类,类的名称根据你的喜好起:
public class chaxunguolv extends ViewerFilter{
}
3、覆盖select这个方法,需要过滤的数据都在这个方法中实现的。
viewer:这个是TableViewer对象。
parentElement:table中的所有数据。
element:当前一行数据。
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
}
4、在过滤类中定义一个条件字符串private string tj.,实例化时把过滤条件转给类变量。
private String tj;
public chaxunguolv(String tj){
this.tj=tj;
}
5、重写select这个方法,如果返回true把当前数据显示在table中,否者把当前数据过滤掉。(我是把分类,名称,助记码的字符串是否包含过滤条件,如果>=0的话,就返回true,显示)
public boolean select(Viewer viewer, Object parentElement, Object element) {
Shangpinxinxi sp=(Shangpinxinxi)element;
if(sp.getfenlei().indexOf(tj)>=0 || sp.getmingcheng().indexOf(tj)>=0 || sp.getzhujima().indexOf(tj)>=0){
lv=true;
}else{
lv=false;
}
return lv;
}
6、在“查询数据”时怎么实现过滤:
tv:是TableViewer对象的变量
tv.resetFilters(); 这个函数是把以前的过滤删除
tv.addFilter:增加过滤
text.getText():
过滤条件字符串 chaxunguolv:过滤类
tv.addFilter(new chaxunguolv(text.getText()));
7、运行项目,实现过滤 。过滤类的完整代码:
public class chaxunguolv extends ViewerFilter{
private String tj;
private boolean lv=false;
public chaxunguolv(String tj){
this.tj=tj;
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
Shangpinxinxi sp=(Shangpinxinxi)element;
if(sp.getfenlei().indexOf(tj)>=0 || sp.getmingcheng().indexOf(tj)>=0 || sp.getzhujima().indexOf(tj)>=0){
lv=true;
}else{
lv=false;
}
return lv;
}
}