2013-12-09 2 views
2

데이터베이스 작업을 처리하기 위해 사용자가 클릭 한 행 번호를 가져와야합니다.Vaadin의 테이블에서 행 번호를 클릭하는 방법은 무엇입니까?

try { 
     for (int i = 1; i < dbManager.getLastTopicId() + 1; i++) { 

      Integer itemId = new Integer(i); 
      String topicTitle = dbManager.getTitle(Integer.toString(i)); 
      String topicText = dbManager.getText(Integer.toString(i)); 
      String topicAuthor = dbManager.getAuthor(Integer.toString(i)); 

      topicList.addItem(new Object[] {topicTitle, topicText, topicAuthor}, 
        itemId); 
     } 
    } catch (UnsupportedOperationException e) { 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

여기서 topicList 테이블에 데이터를로드합니다. 도 사용합니다. topicList.addValueChangeListener(new Property.ValueChangeListener() { public void valueChange(ValueChangeEvent event) 사용자 클릭을 처리하려면 다음을 수행하십시오. 하지만 사용자가 클릭 한 행 번호에서 가져와야합니다. 내가 topicList.getValue()과 물건을 시도했지만 그들 중 나에게 행 번호를 반환하지 않습니다. 감사합니다.

답변

5

으로 ID를 읽을 수 ItemClickListener. 참고 : ItemClickListener는 키보드의 위쪽 화살표 또는 아래쪽 화살표에 응답하지 않으며 ValueChangeListener 만 응답합니다.

EventObject를 사용하면 항목 ID에 액세스 할 수 있습니다.

table.addValueChangeListener(); 
table.addItemClickListener(); 
+0

주 : Vaadin7 방법 이름에

Table table = new Table(); table.setImmediate(true); table.setSelectable(true); table.addListener(new ValueChangeListener() { // With ValueChangeListener respons to keyboard input as well public void valueChange(ValueChangeEvent event) { getMainWindow().showNotification("ValueChange: ItemId: " + event.getProperty().getValue()); } }); table.addListener(new ItemClickListener() { // With ItemClickListener public void itemClick(ItemClickEvent event) { getMainWindow().showNotification("ItemClick: ItemId" + event.getItemId()); } }); 

로 변경 한 테이블이 경우 다중 선택 가능하고 값 변경/모음 수있을 것이다. – Basil

1

클릭 수만 추적하려는 경우 addItemClickListener()을 사용하여 ItemClickListener을 추가 할 수 있습니다. 이 answer을 참조하십시오. 당신은 어쩌면 다중 선택과, 테이블의 값을 읽으려면

, 당신은 당신이 중 하나가 ValueChangeListener 또는를 추가하여 행 ID를 얻을 수 있습니다 당신은 이미처럼 ValueChangeListener을 사용하고 getValue()

관련 문제