JFace Tableviewer多个过滤一个文本框

时间:2015-11-02 12:21:58

标签: filter jface tableviewer

我对过滤表格有疑问。我使用了ViewerFilter,并将select方法重写为适合该表的方法。 Filtertext本身通过Textfield输入。

所以现在我的问题。例如,我的表格如下所示:

      column
       123  
       124

在我的文本字段中,用户可以输入columnname = data1,data2来显示所有具有data1或data2作为数据的行。所以在上面的例子中,如果用户输入column = 123,124,那么两行仍应可见。这里的问题是我在每个输入的字符后刷新我的tableviewer。因此,当用户输入column = 123时,Table仅显示一列。添加时,124到filtertext我过滤我已经过滤的表。所以最后没有数据显示出来。我怎样才能过滤原始的Tabledata?

@Override
public boolean select(final Viewer viewer, final Object parentElement, final Object element) {
    final String filterString = filterText.getText().toLowerCase();
    if (filterString.length() == 0) { return true; }

    final mydata myData= (mydata) element;
    if (filterString.matches("columnName" + ".+")) {
    index = filterString.indexOf("columnName" + ".+");
   evaluateText(myData, filterString, i, index + tableColumnsText[i].length())  
}

public boolean evaluateText(final mydata data, final String filterText, final int beginningIndex) {
        subString = filterText.substring(beginningIndex, filterText.length());
        return evaluateString(data.getString(), subString);
}


public boolean evaluateString(final String cellString, final String commaString) {
    int countSubstrings = 0;
    final String[] items = commaString.split(",");
    countSubstrings = items.length;

    for (final String s : items) {
        if (s.length() != 0) {
            if (!cellString.contains(s)) { return false; }
        }
    }
    return true;
}

所以我试图过滤掉该方法的主要组成部分。我可以以某种方式访问​​未过滤的表吗?

0 个答案:

没有答案