我正在尝试使用记录在SmartGWT中设置ListGrid表对象的选定记录,但我找不到任何方法。我想选择记录,而不是索引。我想使用selectRecord(Record record)
方法。
作为一个例子;
public void onModuleLoad()
{
VLayout main = new VLayout();
final ListGrid grid = new ListGrid();
grid.setHeight(500);
grid.setWidth(400);
grid.setFields(new ListGridField("name", "Name"));
grid.setData(createRecords());
final IButton button = new IButton("Select some");
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event)
{
grid.selectRecord(createRecord("orange"));
}
});
main.addMember(grid);
main.addMember(button);
RootPanel.get().add(main);
}
private ListGridRecord[] createRecords()
{
return new ListGridRecord[]{
createRecord("monkey"),
createRecord("banana"),
createRecord("orange"),
createRecord("sun")
};
}
private ListGridRecord createRecord(String name)
{
ListGridRecord record = new ListGridRecord();
record.setAttribute("name", name);
return record;
}
在这种情况下,我想选择橙色,但此代码选择任何内容。 它可以吗?如果可能的话怎么办?
提前致谢。
答案 0 :(得分:2)
找到了这个解决方案;
selectRecord(grid.getRecordList().find("name", "orange"));
答案 1 :(得分:0)
您的代码存在问题: 当你写
grid.selectRecord(record);
它会搜索网格所具有的相同记录实例。如果两个记录实例相等,那么只有&然后它选择记录。否则你现在面对的时候没有任何反应。这里你需要做的是:
ListGridRecord[] records = countryGrid.getRecords();
int i;
for (i = 0; i < records.length; i++)
{
if (records[i].getAttribute("name").equalsIgnoreCase("orange"))
{
break;
}
}
countryGrid.selectRecord(i);