我正在尝试使用swt创建一个可编辑的表,而我很难保存日期 使用toplink在数据库中修改:
if (referenceViewId.equalsIgnoreCase(TISTableViewPart.ID)) {
//TODO YUCHEN : Register and save objects in db
System.out.println("test");
final IViewPart viewPart = workbenchPage.findView(TISTableViewPart.ID);
final TISTableViewPart vdv = (TISTableViewPart) viewPart;
WorkingUnitMasterDataImpl sessionUow = new WorkingUnitMasterDataImpl();
Object test = vdv.getLocalComposite().getTableViewer().getElementAt(1);
sessionUow.registerObject(test);
try {
sessionUow.commitAndResume();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
使用
Object test = vdv.getLocalComposite().getTableViewer().getElementAt(1);
我只能获得表格的第一个colomne的对象,然后我使用
sessionUow.registerObject(test);
保存更改。有人有想法将整个表作为对象来注册和commitResume吗?提前谢谢。
答案 0 :(得分:1)
如果您正在使用通过ContentProvider正确设置的TableViewer,则假定ContentProvider保存表中包含的所有元素。
如果内容提供程序实现了IStructuredContentProvider,请尝试通过getElements()方法访问这些元素。
Object[] elements = tableViever.getContentProvider().getElements();
如果要注册对象更改,可以在ContentProvider的方法setInput()中执行此操作。实际上,IContentProvider接口的javadoc建议将此方法作为注册更改的位置。
如果您需要在某个时刻访问输入,TableViewer对象可让您通过getInput()方法访问表输入:
Object tableInput = tableViewer.getInput();
祝你好运!