當我單擊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