2013-03-01 63 views
0

當我單擊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); 
    } 
} 
+0

曾試圖消除table.redraw();在細胞的更新方法?? – 2013-03-01 16:13:00

+0

我做過了,但仍然是同樣的問題。發佈的代碼來自展櫃。這是最簡單的情況。 – Spiff 2013-03-01 16:41:47

+0

爲什麼當點擊日期選擇器單元格時選擇更改被調用?它會在您更改選擇時調用,即當您單擊其他行時。我將再次檢查展示示例,但它應該可以正常工作。 – 2013-03-01 18:12:49

回答

1

從什麼AbstractCellTable的源代碼的模樣,你真的必須要麼使用KeyboardSelectionPolicy.BOUND_TO_SELECTION或提供處理選擇至少一種細胞類型。

提交bug報告與谷歌:

http://code.google.com/p/google-web-toolkit/issues/detail?id=8064

+0

感謝您的回答。你是正確的鑰匙工作,我可以上下導航,空間選擇一行,但行不能用鼠標選擇。最主要的是用鼠標選擇行 – Spiff 2013-03-08 07:01:47

+0

是否有任何與KeyboardSelectionPolicy.BOUND_TO_SELECTION對應的內容? – user1050755 2013-03-08 18:06:52