当我单击DatePickerCell的单元格时,表格选择不再起作用。下面DatePickerCell打破表格选择
表刚刚2列:日期,文本
与GWT测试的2.4和2.5 测试了Chrome浏览器,IE9
有什么不对的代码贴?
是否有与SelectionModel和DateCellPicker的DataGrid的工作示例的链接,该选择工作正常?
一个工作示例将回答我的问题。
UPDATE:
我贴一个完整的可运行的例子。
import com.google.gwt.cell.client.DatePickerCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.cellview.client.*;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class DataGridCss implements EntryPoint
{
/**
* A simple data type that represents a contact.
*/
private static class Contact
{
private final String address;
private Date birthday;
private final String name;
public Contact(String name, Date birthday, String address)
{
this.name = name;
this.birthday = birthday;
this.address = address;
}
}
/**
* The list of data to display.
*/
private static final List<Contact> CONTACTS = Arrays.asList(new Contact("John", new Date(), "123 Fourth Avenue"), new Contact("Joe", new Date(), "22 Lance Ln"), new Contact("George", new Date(),"1600 Pennsylvania Avenue"));
public void onModuleLoad()
{
final DataGrid<Contact> table = new DataGrid<Contact>(100);
table.setSize("700px", "300px");
table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
// Add a date column to show the birthday.
DatePickerCell dateCell = new DatePickerCell();
Column<Contact, Date> dateColumn = new Column<Contact, Date>(dateCell)
{
@Override
public Date getValue(Contact object)
{
return object.birthday;
}
};
// Add a field updater to be notified when the user enters a new name.
dateColumn.setFieldUpdater(new FieldUpdater<Contact, Date>()
{
@Override
public void update(int index, Contact object, Date value)
{
object.birthday = value;
}
});
table.addColumn(dateColumn, new TextHeader("Birthday"));
TextColumn<Contact> addressColumn = new TextColumn<Contact>()
{
@Override
public String getValue(Contact object)
{
return object.address;
}
};
table.addColumn(addressColumn, new TextHeader("Address"));
// Add a selection model to handle user selection.
final SingleSelectionModel<Contact> selectionModel = new SingleSelectionModel<Contact>();
table.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler()
{
public void onSelectionChange(SelectionChangeEvent event)
{
Contact selected = selectionModel.getSelectedObject();
if (selected != null)
{
Window.alert("You selected: " + selected.name);
}
}
});
table.setRowCount(CONTACTS.size(), true);
table.setRowData(0, CONTACTS);
RootPanel.get().add(table);
}
}
曾试图消除table.redraw();在细胞的更新方法?? – 2013-03-01 16:13:00
我做过了,但仍然是同样的问题。发布的代码来自展柜。这是最简单的情况。 – Spiff 2013-03-01 16:41:47
为什么当点击日期选择器单元格时选择更改被调用?它会在您更改选择时调用,即当您单击其他行时。我将再次检查展示示例,但它应该可以正常工作。 – 2013-03-01 18:12:49