View Full Version : setSelectedItem() in DataList
jerryc57
23 Jun 2008, 1:40 PM
I'm trying to select an item in a DataList with the setSelectedItem() method and can't seem to make it happen. I'm using the RC's of GWT and GXT on a Mac running FF2. Here's some sample code.
public DlgTest () {
setSize(200, 200);
setLayout(new FlowLayout());
final DataList dl = new DataList();
final DataListItem dl0 = new DataListItem("Item 0");
final DataListItem dl1 = new DataListItem("Item 1");
final DataListItem dl2 = new DataListItem("Item 3");
SelectionListener<ComponentEvent> itmListener = new SelectionListener<ComponentEvent>() {
public void componentSelected(ComponentEvent ce) {
dl.setSelectedItem(dl1);
}
};
add(new Button("by item"), itmListener);
add(dl);
dl.add(dl0);
dl.add(dl1);
dl.add(dl2);
}
Thanks for any help you can give me,
Jerry
dvshestakov
24 Jun 2008, 11:11 AM
Hi,
you can try to experiment with my code, for example:
private DataList createListContentForCategory(String categoryName)
{
Listener l=new Listener<ComponentEvent>()
{
public void handleEvent(ComponentEvent ce)
{
DataList l=(DataList) ce.component;
item=l.getSelectedItem();
...//do something
}
};
DataList dataList=new DataList();
dataList.setScrollMode(Style.Scroll.AUTO);
dataList.setBorders(false);
dataList.setFlatStyle(true);
dataList.addListener(Events.SelectionChange, l);
ListStore<Entry> store=new ListStore<Entry>();
store.setStoreSorter(new StoreSorter<Entry>(new Comparator<Entry>()
{
public int compare(Entry e1, Entry e2)
{
return e1.getName().compareTo(e2.getName());
}
}));
store.add(model.getEntriesByCategory(categoryName));
DataListBinder binder=new DataListBinder<Entry>(dataList, store);
binder.setDisplayProperty("name");
binder.init();
return dataList;
}
, where store.add(model.getEntriesByCategory(categoryName)); is your object model
an then you need to find an item, which you want to select and select it, for example:
private void setSelectedItem(Entry entry)
{
if (item!=null)
{
if (!item.getText().equals(entry.getName()))
{
DataListItem item = dataListForCategory.getItem(1);
dataListForCategory.getSelectionModel().select(item);
dataListForCategory.scrollIntoView(item);
}
}
}
, where dataListForCategory is DataList, which was created above.
That's all.
jerryc57
26 Jun 2008, 6:50 AM
Thanks, that got it working.
:-?I'm not really sure why dl.getSelectionModel.select() works and dl.setSelectedItem() didn't, but the problem is solved and I'll remember that for next time.
Thanks again.
dvshestakov
26 Jun 2008, 8:55 AM
dl.setSelectedItem() does not work, because you create new DataListItem without css styles (it can be seen in debug mode). In my example we find an existing item and select it (it contains css styles).
Good luck!
Powered by vBulletin® Version 4.1.5 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.