- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
TL;DR:如何将来自两个数据库表的信息合并到一个 Vaadin Treetable(或者,当 Vaadin 7.5 发布时,一个分层网格)?
我有一个 Java Swing 桌面应用程序目前可以执行此操作,尽管使用每 30 秒从 SQL Server 更新一次的 Java Beans ArrayLists 可能非常低效。好吧,我现在正在尝试将此桌面应用程序移植到 Vaadin 网络应用程序。桌面应用程序具有登录功能,我最终会担心为网络应用程序做同样的事情,但现在,我只想尝试让这个网络应用程序的最基本部分工作:树表。或者,希望很快,一个分层的网格。
为了帮助说明我的目标,我将尝试发布一张我创建的图像,该图像应该显示两个表中的数据需要如何合并到树表中(使用我现有桌面应用程序的部分屏幕截图) :
我很清楚如何在 SQL 中使用 JOIN 命令,并且我已经简要阅读了 Referencing Another SQLContainer ,但我仍处于学习 Vaadin 的早期阶段,并且仍在努力思考 SQLContainer、FreeformQuery 以及我需要如何实现 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 中使用的数据结构(Container
、Item
、Property
)的知识。但正如我所说,我并不真正了解 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/
我有几个长度不等的 vector ,我想对其进行cbind。我将 vector 放入列表中,并尝试结合使用do.call(cbind, ...): nm <- list(1:8, 3:8, 1:5)
合并(合并)两个 JSONObjects 的最佳方式是什么? JSONObject o1 = { "one": "1", "two": "2", "three": "3" }
我在一个表中有许多空间实体,其中有一个名为 Boundaries 的 geometry 字段。我想生成一个具有简化形状/几何图形的 GeoJson 文件。 这是我的第一次尝试: var entitie
谁能说出为什么这个选择返回 3.0 而不是 3.5: SELECT coalesce(1.0*(7/2),0) as foo 这个返回 3: SELECT coalesce(7/2,0) as foo
首先抱歉,也许这个问题已经提出,但我找不到任何可以帮助我的东西,可能是因为我对 XSLT 缺乏了解。 我有以下 XML: 0 OK
有时用户会使用 Windows 资源管理器复制文件并在他们应该执行 svn 存储库级别的复制或合并时提交它们。因此,SVN 没有正确跟踪这些变化。一旦我发现这一点,损坏显然已经完成,并且可能已经对相关
我想组合/堆叠 2 个不同列的值并获得唯一值。 如果范围相邻,则可以正常工作。例如: =UNIQUE(FILTERXML(""&SUBSTITUTE(TEXTJOIN(",",TRUE,TRANSPO
使用iTextSharp,如何将多个PDF合并为一个PDF,而又不丢失每个PDF中的“表单字段”及其属性? (我希望有一个使用来自数据库的流的示例,但文件系统也可以) 我发现this code可以正常
是否有一个合并函数可以优先考虑公共(public)变量中的非缺失值? 考虑以下示例。 首先,我们生成两个 data.frames,它们具有相同的 ID,但在特定变量上有互补的缺失值: set.seed
我们正在尝试实现 ALM Rangers 在最新的 Visual Studio TFS Branching and Merging Guide 中描述的“基本双分支计划”。 .从指导: The bas
我在不同目录(3个不同名称)中有很多(3个只是一个例子)文本文件,如下所示: 目录:A,文件名:run.txt 格式:txt制表符分隔 ; file one 10 0.2 0.5 0.
我有一张包含学生等级关系的表: Student Grade StartDate EndDate 1 1 09/01/2009 NULL 2
我在学习 https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-associatio
我觉得我有世界上最简单的 SVN 用例: 我有一个文件,Test.java在 trunk SVN的。 我分行trunk至 dev-branch . 我搬家Test.java进入 com/mycompa
我有两个数据框,其中一些列名称相同,而另一些列名称不同。数据框看起来像这样: df1 ID hello world hockey soccer 1 1 NA NA
Elasticsearch 中是否缺少以扁平化形式(多个子/子aggs)返回结果的方法? 例如,当前我正在尝试获取所有产品类型及其状态(在线/离线)。 这就是我最终得到的: aggs [ { key:
如何合并如下所示的 map : Map1 = Map(1 -> Class1(1), 2 -> Class1(2)) Map2 = Map(2 -> Class2(1), 3 -> Class2(2)
我试图通过从netezza服务器导入数据来合并两个数据集。 以下是数据集,其数字为,ID为,字母为,名称为: 下表都是使用命令从netezza导入的: sqoop import --connect n
我有两个数组 $array1 = array('first', 'second', 'third', 'fourth'); $array2 = array('first', 'third', 'fou
我正在 SQL Server 中运行合并。在我的更新中,我只想在值发生更改时更新该行。有一个版本行在每次更新时都会递增。下面是一个例子: MERGE Employee as tgt USING (SE
我是一名优秀的程序员,十分优秀!