gpt4 book ai didi

gwt - 如何在 GWT 单元格表上应用类似搜索?

转载 作者:行者123 更新时间:2023-12-04 08:14:41 25 4
gpt4 key购买 nike

我正在使用 GWT 2.3.I,我正在使用 GWT 单元格表。
下面是我的单元格表的代码:

public class FormGrid extends SuperGrid {

List<Form> formList;


@Override
public void setColumns(CellTable table) {
TextColumn<Form> nameColumn = new TextColumn<Form>() {
@Override
public String getValue(Form object) {
return object.getName();
}
};
table.addColumn(nameColumn, "Name");
}

@Override
public void setData() {
if (formList != null && formList.size() > 0) {
AsyncDataProvider<Form> provider = new AsyncDataProvider<Form>() {
@Override
protected void onRangeChanged(HasData<Form> display) {
int start = display.getVisibleRange().getStart();
int end = start + display.getVisibleRange().getLength();
end = end >= formList.size() ? formList.size() : end;
List<Form> sub = formList.subList(start, end);
updateRowData(start, sub);
}
};
provider.addDataDisplay(getTable());
provider.updateRowCount(formList.size(), true);
}
}

public List<Form> getFormList() {
return formList;
}

public void setFormList(List<Form> formList) {
this.formList = formList;
}

}

在这个我的设置列和设置数据将被称为父类(super class)流。这个单元格表工作正常。
现在我想在这个单元格表中放置一个过滤器类型工具(如搜索)。它应该是,单元格表上方有一个文本框,并且该文本框中所写的内容,它应该对所有表单名称发出类似查询对于该文本框值。

例如,我在网格中有 1000 个表单。现在,如果用户在单元格表上方的某个过滤器文本框中写入“app”,则名称中包含“app”的所有表单都将被过滤,而网格仅具有这些表单。

这是第一种情况:

另一种情况是我只在网格名称中呈现一列。我在表单中还有两个属性(描述,标签)。但我没有呈现它们。现在过滤器如果用户在过滤器框中写入“应用程序”,那么它应该制作一个查询所有三个(名称、描述和标签),如果“app”与三个中的任何一个匹配,则应返回。

我不知道如何在单元格表中应用过滤器。
请帮帮我。提前致谢。

最佳答案

您可以在 expenses 中找到一个实现。样本。

这是步骤的简短摘要

1.) 创建一个文本框和一个搜索按钮。
2.) 为 SearchButton 添加一个 clickHandler (你也可以将 KeyUpHandler 添加到 Textbox 中)

searchButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
search();
}
});

3.) 在搜索函数中检索 searchString 并存储它。
private void search() {
searchString = searchBox.getText();
setData();
}

4.) 修改您的 setdata() 函数以将 searchString 考虑在内
@Override
public void setData() {
if (formList != null && formList.size() > 0) {
AsyncDataProvider<Form> provider = new AsyncDataProvider<Form>() {
@Override
protected void onRangeChanged(HasData<Form> display) {
int start = display.getVisibleRange().getStart();
int end = start + display.getVisibleRange().getLength();
//new function if searchString is specified take into account
List<Form> sub = getSubList(start,end);
end = end >= sub.size() ? sub.size() : end;
updateRowData(sub.subList(start, end);, sub);
}
};
provider.addDataDisplay(getTable());
provider.updateRowCount(formList.size(), true);
}
}

private List<Form> getSubList(int start, int end) {
List<Form> filtered_list = null;
if (searchString != null) {
filtered_list= new ArrayList<Form>();
for (Form form : formList) {
if (form.getName().equals(searchString) || form.getTag().equals(searchString) || form.getDescription().equals(searchString))
filtered_list.add(form);
}
}
else
filtered_list = formList;
return filtered_list;
}

关于gwt - 如何在 GWT 单元格表上应用类似搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7426877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com