使用方法“selectRecords(记录记录)”在SmartGWT中设置ListGrid选择

时间:2011-03-24 15:22:58

标签: gwt smartgwt

我正在尝试使用记录在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;
}

在这种情况下,我想选择橙色,但此代码选择任何内容。 它可以吗?如果可能的话怎么办?

提前致谢。

2 个答案:

答案 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);