0

我正在尝试使用 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);

我只能获取表格第一个列的对象,然后我使用

sessionUow.registerObject(test);

保存更改。有人有想法将整个表作为一个对象来注册和提交简历吗?提前致谢。

4

1 回答 1

1

如果您使用正确设置了 ContentProvider 的 TableViewer,则假定 ContentProvider 包含表格包含的所有元素。

尝试通过 getElements() 方法访问这些元素,以防您的内容提供者实现 IStructuredContentProvider。

Object[] elements = tableViever.getContentProvider().getElements();

如果您想注册对象更改,您可以在 ContentProvider 的 setInput() 方法中进行。实际上,IContentProvider 接口的 javadoc 建议将此方法作为注册更改的地方。

如果您需要在某个时刻访问输入,TableViewer 对象允许您通过 getInput() 方法访问表输入:

Object tableInput = tableViewer.getInput();

祝你好运!

于 2013-04-05T11:04:10.970 回答