2017-01-19 1 views
0

데이터베이스에서 데이터를 가져 와서 테이블 뷰어의 테이블에 표시 할 수 있지만 행을 클릭하면 데이터를 편집 할 수있는 다른 형식으로 나타납니다. 클릭 업데이트에 대한 새로운 값으로 업데이 트해야합니다. 내가 선택한 행을 검색하는 데 사용하고 있지만, 나는 테이블을 업데이 트하는 방법을 얻지 못하고 있습니다. 일부 아이디어를 제안 해주십시오.테이블 뷰의 열 업데이트

나는 아래에 적어 두었습니다. 개체가 생성 될 때마다 내 클래스의 생성자에 코드가 생성됩니다. 테이블이 생성되고 l1은 다른 UI로 전달되는 데이터의 목록입니다.

input[i] = new MyModel(persons[i].getDateOfRegistration(), persons[i].getFirstName(), 
       persons[i].getMiddleName(), persons[i].getLastName(), persons[i].getGender(), 
       persons[i].getDob(), persons[i].getContactNumber(), persons[i].getMaritalStatus(), 
       persons[i].getAddress(), persons[i].getCountry(), persons[i].getBloodGroup(), 
       persons[i].getInsuranceDetails().getPolicyHolderName(), 
       persons[i].getInsuranceDetails().getPolicyNumber(), 
       persons[i].getInsuranceDetails().getSubscriberName(), 
       persons[i].getInsuranceDetails().getRelationshipToPatient()); 
    viewer.setInput(input); 

    table.setHeaderVisible(true); 
    table.setLinesVisible(true); 

    GridData gridData = new GridData(); 
    gridData.verticalAlignment = GridData.FILL; 
    gridData.horizontalSpan = 2; 
    gridData.grabExcessHorizontalSpace = true; 
    gridData.grabExcessVerticalSpace = true; 
    gridData.horizontalAlignment = GridData.FILL; 
    viewer.getControl().setLayoutData(gridData); 
    viewer.addSelectionChangedListener(new ISelectionChangedListener() { 
     public void selectionChanged(SelectionChangedEvent event) { 
      IStructuredSelection selection = (IStructuredSelection) event.getSelection(); 

      StringBuffer sb = new StringBuffer("Selection - "); 

      int j = 0; 
      String[] s; 
      for (Iterator iterator = selection.iterator(); iterator.hasNext();) { 

       sb.append(iterator.next() + ", "); 
       System.out.println("Testing::" + sb); 

      } 
      System.out.println(sb); 
      String result[] = new String[18]; 
      List l1 = new ArrayList(100); 
      String[] parts = sb.toString().split("="); 
      for (int i = 0; i < parts.length; i++) { 
       System.out.println("s" + parts[i]); 
       String[] s1 = parts[i].split(","); 
       l1.add(s1[0]); 
      } 
      SWTPatientRegistrationUpdatePageEventView swtPatientRegistrationUpdatePageEventView = new SWTPatientRegistrationUpdatePageEventView(); 
     swtPatientRegistrationUpdatePageEventView.openParentUpdateShell(l1); 
     // viewer.refresh(); 
      //flag=false; 
      //refreshingData(list); 

     } 
    }); 
+0

테이블 셀 편집기와 EditingSupport 클래스를 사용합니다. [이 튜토리얼] (http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html)을 참조하십시오. –

+0

전체 생성자를 유지하면 생성되지 않습니다. 어떤 문제? 나는 내가 그것을하고있는 길을 계속하면 콘텐츠와 테이블 뷰어 또는 벌금을 설정하는 별도의 클래스를 유지해야합니까? –

답변

0

항상 테이블 뷰어 MVC 아키텍처를 따라야합니다. 문제를 해결하기 위해 수행 할 수있는 조치는 다음과 같습니다.

  1. 데이터를 보관할 적절한 데이터 구조 (모델 클래스)를 만듭니다. 뷰어에서 설정 한 배열을 사용하십시오 .setInput()

  2. 테이블 행을 클릭하거나 두 번 클릭하면 데이터를 가져 와서 생성 된 데이터 구조 (새 객체 포함)에 저장합니다.

  3. 해당 데이터 구조를 양식 대화 상자에 전달하십시오.

  4. 업데이트 양식을 완료하면. 업데이트 된 데이터를 새 Model 객체에 다시 채 웁니다.

  5. 그리고 양식을 닫은 후에 해당 모델 개체를 다시 부모로 전달하십시오.

  6. 양식 대화 상자에서받은 개체를 사용하여 해당 배열 요소를 업데이트하고 tableviewer를 새로 고칩니다.

일부 코드 모듈이 필요한 경우 알려 주시기 바랍니다. 감사합니다

관련 문제