sql-server - 将两个数据库表合并为一个 Vaadin Treetable

标签 sql-server database vaadin

TL;DR:如何将来自两个数据库表的信息合并到一个 Vaadin Treetable(或者,当 Vaadin 7.5 发布时,一个分层网格)?


我有一个 Java Swing 桌面应用程序目前可以执行此操作,尽管使用每 30 秒从 SQL Server 更新一次的 Java Beans ArrayLists 可能非常低效。好吧,我现在正在尝试将此桌面应用程序移植到 Vaadin 网络应用程序。桌面应用程序具有登录功能,我最终会担心为网络应用程序做同样的事情,但现在,我只想尝试让这个网络应用程序的最基本部分工作:树表。或者,希望很快,一个分层的网格。

为了帮助说明我的目标,我将尝试发布一张我创建的图像,该图像应该显示两个表中的数据需要如何合并到树表中(使用我现有桌面应用程序的部分屏幕截图) :

Diagram

我很清楚如何在 SQL 中使用 JOIN 命令,并且我已经简要阅读了 Referencing Another SQLContainer ,但我仍处于学习 Vaadin 的早期阶段,并且仍在努力思考 SQLContainerFreeformQuery 以及我需要如何实现 FreeformStatementDelegate 为我的项目。更不用说我需要为每一行实现复选框,正如您在那张照片中看到的那样,以便在单击它们时更新数据库。对于具有多个 OrderDetail 项目的作业,其中只有部分 OrderDetail 项目已完成,复选框的半选中状态将是必要的。为了使它适用于我的 Java Swing 程序,我不得不依靠一位已经准备好大部分代码的专家级 Java 开发人员,天哪,它是不是 super 复杂!

如果有人能给我提供有关如何完成此任务的高级 View 以及一些示例,我将感激不尽。我完全理解我在这里的要求很高,只要你愿意,我愿意慢慢来,一步一步来。我真的很想完全理解这一点,所以我不会不假思索地复制粘贴代码。

最佳答案

我从未使用过SQLContainer,所以这可能不是您想要的答案。我刚刚快速浏览了 SQLContainer,我不确定它是否符合您的目的。对于 TreeTable,您将需要一个 Container 来实现 Container.Hierarchical 接口(interface),否则该表将对其进行包装,您必须设置亲子关系手动。您可能可以扩展 SQLContainer 并在该类中实现 Container.Hierarchical 中的方法,但这可能会变得复杂。

在您的情况下,我认为我会实现自己的容器,可能会扩展 AbstractContainer,以免费获取监听器代码,并实现 Hierarchical。有很多方法要实现,我知道,所以这需要一些时间,但大多数方法很快就会实现,你可以从基本方法开始,添加更多接口(interface)(Ordered Sortable, Indexed, Filterable, Collapsible, ...)稍后。
如果处理得当,您最终会得到易于阅读的代码,这些代码可以在将来轻松扩展,并且您将不会依赖于 SQLContainer 的 future 版本。

另一个好处是您将学到很多关于 vaadin 中使用的数据结构(ContainerItemProperty)的知识。但正如我所说,我并不真正了解 SQLContainer 所以也许会有更好的答案告诉您使用 SQLContainer

很容易

对于复选框功能,您可以将名称/产品属性显示为 CheckBox。使用 Icon 和 Caption,它看起来就像您想要的一样。参见 http://demo.vaadin.com/sampler/#ui/data-input/other/check-box并设置一个图标。半检查状态可以用 css 来完成。

希望这能帮助您找到适合您任务的解决方案。

关于sql-server - 将两个数据库表合并为一个 Vaadin Treetable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29524194/

相关文章:

websocket - vaadin 7 网络套接字

java - Vaadin 14 'could not navigate to "' 重新包装后

vaadin - 如何获取 Vaadin 8 网格列类型?

sql - 通过 union all 使用多个 with 语句

javascript - 如何将fullCalendar中的资源保存到数据库中?

sql-server - 不再需要在sql中使用 View 了吗?

Python:循环遍历 Dict/Dataframe 中的行以制作 CSV 并将其作为电子邮件发送给适当的收件人

ios - Realm 查询属性(property)总和

sql - IF block 在条件不适用时执行

java - JSP 中的 JDBC 连接 :java. lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc