我已从数据库中检索数据,并且我能够在表格查看器的表格中显示它,但我的任务是点击一行,数据应该以另一种形式出现,我可以在其中编辑它并点击更新视图应该使用新值更新。我使用viewer.addSelectionChangedListener来检索所选行,但我没有得到如何更新表。请给我一些想法
我在我的类的构造函数中编写了以下代码,因此每当创建对象时都会生成表,而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 :(得分:0)
确保我们将始终遵循表查看器MVC架构。我们可以采取的措施来解决您的问题:
创建适当的数据结构(Model Class)来保存数据。并在viewer.setInput()
单击/双击表格行时,获取数据并将其保存在创建的数据结构中(使用新对象)。
将该数据结构传递给表单对话框。
完成表单更新后。再次在新的Model对象中填充更新的数据。
表单关闭后,将该模型对象传回父级。
使用从Form Dialog收到的对象更新了相应的数组元素,并刷新了tableviewer。
如果您需要一些代码模块,请告诉我。感谢