2012-05-17 83 views
0

我只想更新CellTable列。如何動態更新GWT CellTable列

參見例如。

  Header1 | Header2 | Header3 | 
     ------------------------------- 
     Column11| Column12| Column13| 
     Column21| Column22| Column23| 
     Column31| Column32| Column33| 

    final TextColumn<Student> nameColumn = new TextColumn<Student>() { 

     @Override 
     public String getValue(Student object) { 
      return object.getName(); 
     } 
    }; 
    cellTable.addColumn(nameColumn, "Name"); 

    final TextColumn<MyDTO> classColumn = new TextColumn<MyDTO>() { 

     @Override 
     public String getValue(Student object) { 
      return object.getClassName(); 
     } 
    }; 
    cellTable.addColumn(classColumn, "Age"); 

    final TextColumn<Student> subjectColumn = new TextColumn<Student>() { 

     @Override 
     public String getValue(Student object) { 
      return object.getMark(); 
     } 
    }; 

    cellTable.addColumn(subjectColumn, "Subject"); 

當執行一些操作,我只是想更新Column22,column23等等......這樣的Column32,Column33 ....

誰能幫助我?

由於提前, Gnik

+0

目前尚不清楚你究竟想達到什麼目的?更新是什麼意思?它是在編輯表中的數據嗎?另外,你可以發佈你試圖實現功能的代碼嗎? –

+0

Ganesh我添加了我的代碼。是的,我想編輯這些列的文字 – Prince

回答

1

您可以使用像ListDataProvider數據提供了CellTable。數據提供者保存表的數據並與表關聯。因此,當數據提供者中的數據發生任何更改時,當您調用refresh()方法時,更改將反映在表中。這裏是完整的代碼(我已經修改了一些可用的代碼here

public class GWTCellTable implements EntryPoint { 
// A simple data type that represents a contact. 
private static class Contact { 
    private String address; 
    private String name; 

    public Contact(String name, String address) { 
     this.name = name; 
     this.address = address; 
    } 
} 

// The list of data to display. 
private static List<Contact> CONTACTS = Arrays.asList(new Contact("John", "123 Fourth Road"), new Contact("Mary", "222 Lancer Lane"), new Contact("Zander", 
     "94 Road Street")); 

public void onModuleLoad() { 

    // Create a CellTable. 
    CellTable<Contact> table = new CellTable<Contact>(); 

    // Create name column. 
    TextColumn<Contact> nameColumn = new TextColumn<Contact>() { 
     @Override 
     public String getValue(Contact contact) { 
      return contact.name; 
     } 
    }; 

    // Create address column. 
    TextColumn<Contact> addressColumn = new TextColumn<Contact>() { 
     @Override 
     public String getValue(Contact contact) { 
      return contact.address; 
     } 
    }; 

    // Add the columns. 
    table.addColumn(nameColumn, "Name"); 
    table.addColumn(addressColumn, "Address"); 

    // Create a data provider. 
    final ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>(); 

    // Connect the table to the data provider. 
    dataProvider.addDataDisplay(table); 

    // Add the data to the data provider, which automatically pushes it to 
    // the 
    // widget. 
    List<Contact> list = dataProvider.getList(); 
    for (Contact contact : CONTACTS) { 
     list.add(contact); 
    } 

    // Add it to the root panel. 
    RootPanel.get().add(table); 

    Button button = new Button("Update table"); 
    RootPanel.get().add(button); 

    //Clicking on the update button, updates the first row of the table 
    button.addClickHandler(new ClickHandler() { 
     @Override 
     public void onClick(ClickEvent event) { 
      dataProvider.getList().get(0).name = "Ganesh"; 
      dataProvider.getList().get(0).address = "Gachibowli"; 
      dataProvider.refresh(); 
     } 
    }); 
} 
} 
+0

Ganesh真的很抱歉。這是我的錯誤。我不會手動編輯列。我想更新這意味着用另一個值覆蓋列。對不起。你能幫我解決嗎? – Prince

+0

請參閱已編輯的答案 –

+0

我在dataProvider.getList()。get(0).name =「Ganesh」行中收到錯誤「Unexpected type。Required variable,found value」。請幫幫我。 – Prince