Vaadin 7中的网格
和表格
组件之间有什么区别?
我应该使用哪种,何时使用?
事实上,这两种方法都可以实现你想要的一切。但我的经验是,网格使用起来更舒适。
这个表很容易理解,也很容易用于简单的表(正如您可能猜到的)。因此,如果您只想很好地显示几行可视化的数据,请使用表。它是稳定的,在这方面工作得很好。
网格看起来像一个表格,但它有一些面向表格的功能。如果你有一大堆数据要渲染,网格可能会处理得更好。还有一个很好的做法是“内联编辑”你的数据。有一种方法可以广泛定制网格的标题。如果你想在一个类似表格的组件中进行大量的定制和交互——使用网格。
查看这里的功能:
https://vaadin.com/grid
http://demo.vaadin.com/sampler/#ui/grids-and-trees/grid
在这两个组件中选择行/单元格的方式有所不同。例如,用于选择的EventListeners在返回的值方面略有不同。此外,在向列和行添加列和行的方式上也存在差异,但这只是一个实现问题,所以这并不重要。
网格是一个新的更强大的组件,它应该是表的继承者(见表死了,网格长寿了)。所以,不应该有任何需要支持表而不是网格。
下面是Vaadin about从表迁移到网格的系列文章中的第一篇:https://vaadin.com/blog/-/blogs/mission-rip-table-migrate-to-grid-basic
网格→ 刚出现的
Table
是Vaadin最早版本中内置的一个非常好的数据网格显示小部件。
网格
是从头开始的大重写,旨在取代表格。Vaadin团队正在利用他们从经验中获得的智慧,“如果我们当时知道我们现在知道的”,在当今网络技术的背景下,尽可能实现最好的数据网格。网格是如此重要,以至于它有自己的虚荣页面。请参阅本公司博客文章以快速了解概况。
所以,一般来说,我建议你关注网格。尝试一下,先学习一下,看看是否符合你的需求。如果您遇到错误或问题,或者您需要Grid中缺少的功能,请返回表。您可以在项目中混合和匹配两者,但需要注意的是,不同的外观和行为可能会混淆您的用户。
想想Grid吧,他是一个早熟的青少年,充满希望,渴望跨入成年,而Table则是一个成熟的成年人,在中年的黄金岁月里努力工作,同时梦想着一个收入丰厚的退休日,驶向夕阳。
如果在一个持续的项目中使用Vaadin 6,或者您需要支持非常旧的浏览器,那么Table
是您唯一的选择。Grid
需要Vaadin 7或更高版本。
以下是Grid目前缺少的一些主要的Table功能。
两者都有许多共同的特点。他们对浏览器进行延迟加载,只在需要时从服务器端自动加载数据,以免网络浏览器过载。两者都允许用户拖动列重新排序。两者都允许用户显示/隐藏列。
两者都允许选择单行或多行。
网格还有一个自动功能,它可以添加一列复选框。用户可以通过单击这些复选框来选择多行,而不是使用鼠标或鼠标键盘。许多(如果不是大多数的话)用户对鼠标驱动的多行选择很笨拙。请参阅此屏幕截图,并注意第一栏。
对选择的编程支持是不同的。网格不扩展AbstractSelect
,而是定义自己的选择API。调用addSelectionListener()
并定义SelectionListener
。见瓦丁之书。
两者都有页眉和页脚,但是网格有更多的选择。网格可以放置小部件而不是文本。网格可以有多行标题。网格可以连接标头单元格,如超文本标记语言表中的跨接。
两者都提供数据的就地编辑,但方式不同。表允许编辑单元格中的数据。Grid采用了不同的方法,通过显示一个小窗口,一个小数据输入表单来编辑整行。此表格包括一对确认书
Grid提供了用户控制的过滤,其中一行可输入的单元格显示在标题下方。当用户键入时,将应用筛选器以仅显示匹配的行。看这个截图。对于表,您需要创建某种用户界面并应用过滤。
更新:Vaadin 8带来了一个新版本的网格,它利用了一个新改进的、大大简化的数据模型。这是使用网格而不是表的主要原因。请注意,原始网格和表格仍然可以通过Vaadin 7兼容层在Vaadin 8中使用。
以下旧信息保持不变…
Table和Grid都是一个仅表示的小部件,由一个单独的数据对象支持,根据Vaadin数据模型实现Container
接口。
Table类还充当一个容器,这总是让我感到困惑。我很高兴看到网格保持了更清晰的分隔。
和表一样,网格也提供了一些方便的方法,用于快速而肮脏的情况,即您希望在网格本身中抛出一些数据,而无需正式生成容器。但网格的便利方法使用行和列术语,而不是容器的项和属性术语。这些术语更清楚地表明,您正在与网格对话,但网格代表您在其默认附加的IndexedContainer
实例上进行操作。
更新:在Vaadin 8.1中,网格获得了在单元格中显示组件的能力。查看组件渲染器的实时演示。
单元格内容处理是不同的。网格不能直接显示列图标,也不能在单元格中放置组件(小部件)。而是使用了新的渲染器
功能。
在《瓦丁书》中,这两本书都有一章,一章是表格,一章是表格。
两者都有现场演示。一张桌子(和三张桌子)。一对用于网格,一个完整窗口和一个具有不同方面的窗口。
有关Grid,请参见本手册页面,其中包括一个嵌入式实时演示,并带有指向进一步演示的链接。
Grid有一个内置的小部件,用于将数字显示为一个小的温度计小部件。请参见最后一列中的此屏幕截图。
有关更多具体差异,请参见第5.24.1节概述-
神秘的...Grid是Vaadin Components中的第一个组件,Vaadin Components是一套基于Google Polymer构建的高质量Web组件,可以与任何支持Web组件的框架一起使用。虽然Vaadin团队promise在未来几年支持Table,但不要指望它会受到如此特别的关注。
在瓦丁8.0和8.1中,网格变得更好。主要改进包括:
grid.add列(Person::getFirstName). setCaption(First Name);
Container
消失了,更容易延迟加载数据:grid.setDataProvider((sortorder-offt-Limited)-
表组件仍然可以通过Vaadin 8中的兼容层继续使用Vaadin 7类。
Vaadin团队对网格有很好的计划,所以你在StackOverflow页面上读到的很多内容都会改变。在接下来的几个月和几年里,该团队将急切地添加功能、增强和错误修复。Grid在其短暂的历史中已经进行了许多增强,所以在阅读关于局限性或缺乏功能的旧文档时要小心——
是否有可能强制Vaadin8网格从后端热切地加载所有行?目前,它只显示屏幕上可见的记录,并在网格滚动时获取下一行。
前言:我是一个高级Vaadin开发人员(我已经使用了6,7,现在我所有的项目都迁移到了Vaadin 8)。 我开始研究瓦丁10/Flow,但我发现自己陷入了困境。 我真正纠结的是“项目”本身。我越深入,就越觉得这个框架正在进入一个基于css/html的框架,这需要比java更多的css/html知识。我的意思是,如果你不完全知道css和html是如何工作的,你就不能再轻松地使用这个框架了。 问题是
我想在Vaadin 11的网格中实现自动换行。据我所知,你需要为此做两件事: < li >设置相应单元格的样式。 < li >增加行高。 我使用以下代码完成了第一步: productsGrid.addColumn(TemplateRenderer.of(“[[item.name]]”).withProperty(“name”,产品::getName)).setHeader(“name”); 现在我
这里有一个非常基本的例子,我试图根据单元格中存在的特定字符串值来给特定的单元格着色。我输入打印报表,然后点击返回“绿色”,返回“橙色”,等等...点,但在运行时,我只得到灰色和白色交替的行颜色,没有我特定的单元格颜色。我使用的css是直接从《瓦丁之书》中提取的,我认为这很简单。也许我遗漏了一些小事。 单元格样式生成器代码: CSS: 当我查看浏览器中实际呈现的内容时,这是单元格的样子:
我想删除Vaadin 8网格中所有单元格周围的边框。我不相信这可以用代码来做,并且表格的css不适用于网格,因此你如何为网格执行此操作?
Vaadin 8刚出来。在Grid中添加过滤器从来没有出现在他们的文档中,我只在stackoverflow中找到了一个可行的解决方案。 但是现在自从更新之后,这个解决方案就不再工作了,因为SimpleStringFilter在新的网格中不再可用,并且BeanItemContainer不再被识别,只允许setItems()填充网格数据。 谁能帮我更新瓦丁8的代码?