使用 SelectionModel 或 ListDataProvider 选择 CellList 中的元素

2024-03-29

我使用 CellList 列出数据,使用 ListDataProvider 管理数据,使用 SelectionModel 从 CellList 中选择元素并相应地生成事件。

现在,当我使用 cellList.getList().set(index, bean) 或 cellList.getList().remove() 更新或删除元素时,它会成功执行该操作。但之后它会自动选择 CellList 中我不想要的第一条记录。

谁能建议我如何取消选择 CellList 中的选定记录?

下面是我如何初始化选择模型和列表提供程序的代码:

ListDataProvider<AppsBean> dataProvider = new ListDataProvider<AppsBean>();
CellList<AppsBean> appsCellList;
SingleSelectionModel<AppsBean>  singleSelectionModel;

ProvidesKey<AppsBean> keyProvider = new ProvidesKey<AppsBean>() {
        public Object getKey(AppsBean item) {
            // Always do a null check.
            return (item == null) ? null : item.getId();
        }
    };
    //here cell is the AbstractCell<AppsBean>    
    appsCellList = new CellList<AppsBean> (cell, keyProvider);
    dataProvider.addDataDisplay(appsCellList);
    appsCellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);

    singleSelectionModel = new SingleSelectionModel<AppsBean>(keyProvider);
    appsCellList.setSelectionModel(singleSelectionModel);
    singleSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {

        @Override
        public void onSelectionChange(SelectionChangeEvent event) {
            AppsBean selectedApp = singleSelectionModel.getSelectedObject();
            if (selectedApp != null)
                appsForm.fillApps(selectedApp);
        }
    });

当我添加新记录时:

dataProvider.getList().add(0, appsBean);

用于更新记录:

AppsBean bean = singleSelectionModel.getSelectedObject();
dataProvider.getList().set(dataProvider.getList().indexOf(bean), appsBean);

对于删除:

int selectedIndex = dataProvider.getList().indexOf(singleSelectionModel.getSelectedObject());
dataProvider.getList().remove(selectedIndex);

您必须实现 KeyProvider,以确保即使对象本身发生更改,您选择的 DTO 也保持不变。
如果您不提供 KeyProvider,它可能会使用 equals 来比较对象,如果它们发生变化,那么您可能会遇到问题。

ProvidesKey keyProvider = new ProvidesKey() {
    public Object getKey(Contact item) {
       //return the unique identifier for your DTO
       return (item == null) ? null : item.id;
    }
};

然后你必须用这个keyProvider初始化CellTable和selectionModel

 CellList cellList = new CellList(new ContactCell(),keyProvider);

 SelectionModel selectionModel = new SingleSelectionModel(keyProvider);
 cellList.setSelectionModel(selectionModel);

Update取消选择选定对象的工作方式如下:

 Object obj  = selectionModel.getSelectedObject();
 if (obj != null) {
     selectionModel.setSelected(obj,false);
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SelectionModel 或 ListDataProvider 选择 CellList 中的元素 的相关文章

  • 从 GWT 访问 Web 服务

    有什么方法可以使用 GWT 的 WSDL 访问 Web 服务吗 以前我试图使用 ws import 生成的类 但后来有人向我指出 GWT 无法处理所有 Java 只能处理它的一个子集 因此它无法理解 ws import 类 感谢致敬 Krt
  • 使用 GWT 平台将参数从一个演示者传递到另一个演示者

    我正在尝试将已加载到演示者上的参数传递给另一个演示者 例如来自某个客户端的汽车 最好的方法是什么 使用网守 有什么例子吗 PS 我将 DI 与 gin 和 GWT Platform 框架一起使用 如果应该在事件触发时加载演示者 您可以使用P
  • 如何在 GWT 2.7 应用程序中启用生产模式

    我想通过 gwt maven plugin 和 jenkins 在我的服务器上部署 GWT 2 7 应用程序 但是 在编译过程之后 当我启动我的应用程序时 我收到以下错误消息 Couldn t load APPLICATION NAME f
  • 如何使用 uibinder 创建带有子级的 gwt 复合组件?

    我想创建一个组件来装饰它的子组件 例如 mycomponent ui xml
  • 使用 SelectionModel 或 ListDataProvider 选择 CellList 中的元素

    我使用 CellList 列出数据 使用 ListDataProvider 管理数据 使用 SelectionModel 从 CellList 中选择元素并相应地生成事件 现在 当我使用 cellList getList set index
  • 如何在另一个应用程序中使用一个 gwt 应用程序的源代码

    我有两个不同的 gwt 项目 并且想要在另一个模块中使用一个 gwt 应用程序的类 有什么办法可以做到这一点吗 我遵循以下方法 在第二个项目中添加了以下两行
  • GWT 应用程序中使用的 Javascript 通用 clone() 方法

    我试图编写一个通用克隆函数 它应该能够进行真正的深度克隆 我遇到过这个链接 如何在 javascript 中深度克隆 https stackoverflow com questions 4459928 how to deep clone i
  • vaadin gwt 编译器错误未知参数:-war

    我的 vaadin 项目有问题 由于我对 vaadin 相当陌生 所以我不确定如何解决它 我想重新编译我的小部件集 但即使在自定义 Eclipse 之后 我也会收到相同的错误消息 首先它通过命令行执行编译器 接下来它告诉我小部件集是从某个类
  • 如何使用 GWT Designer 配置 Ext GWT?

    我在使用 GWT Designer 配置 GXT 时遇到问题 我拥有 Eclipse GWT 插件和 GXT 的所有新版本 但无法配置 GXT 以与 GWT Designer 一起使用 我设置了我的项目 以便可以编译我的 GXT 项目并在浏
  • AuthenticationCredentialsNotFoundException:在 SecurityContext 中找不到身份验证对象

    我在我的服务器上实现了以下登录功能这个帖子 https stackoverflow com questions 13914547 gwt spring security integration pure gwt no jsp基本上 Tran
  • 动态创建具有不同亮度的颜色

    我有一种颜色 我只在运行时知道 我想使用这种颜色创建两种新颜色 一种非常明亮 一种不明亮 为了澄清一下 假设我的颜色是红色 我想创建 浅红色 颜色和 深红色 颜色的十六进制值 我该怎么做呢 我的代码是使用 GWT 用 Ja va 编写的 将
  • 生产中的 GWT 源映射

    GWT 支持超级开发模式下的源映射 不幸的是 尽管我在 gwt xml 文件中添加了源映射选项 但它们似乎无法在生产模式下工作 如何在那里启用它们 看看 GWT 自己的网站是如何做到这一点的 https gwt googlesource c
  • GWT 和 Google 文档 API

    我正在使用 GWT 创建一个简单的应用程序 让教师可以轻松创建自己的课程 该应用程序将位于 Google App Engine 上 但我想将课程存储在用户的 Google 文档空间中 是否可以 据我所知 gwt 将 java 转换为 jav
  • 带有编辑器框架的 GWT 验证器

    有没有人意识到编辑器和 jsr 303 验证如何与 GWT 2 3 一起工作 未来 验证 API 已添加到 gwt sdk 但我无法使用编辑器框架验证实体 无论 我确实从来没有从客户端或服务器端抛出错误 这是一个代码片段 public cl
  • GWT 和身份验证

    保护 GWT Tomcat 应用程序执行身份验证和授权的最佳策略是什么 有两种基本策略 确保入口点安全 确保远程服务的安全 确保入口点安全 最简单的方法是使用常规 Web 应用程序安全工具限制对 GWT 生成的 html js 文件的访问
  • 如何清除gwt中的缓存?

    我怎样才能清除缓存gwt 或者有什么方法可以阻止浏览器保留缓存gwt 当您部署 GWT 应用程序时 避免代理和浏览器缓存 GWT 生成的 nocache js 文件非常重要 一种解决方案是实现一个 Servlet 过滤器 添加控制缓存行为的
  • 如何使用 GWT 检测操作系统?

    Basically what I want to know is to find out if my GWT application is running on a MacOS or any other operating system t
  • 测试 GWT 代码的最佳方法是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • GWT SafeHTML、XSS 和最佳实践

    OWASP 的优秀人员强调 您必须对 HTML 文档中要放入不受信任数据的部分 正文 属性 JavaScript CSS 或 URL 使用转义语法 看OWASP XSS https www owasp org index php XSS 2
  • GWT 和 Guava 的问题

    我很难让 GWT 与 Guava 一起工作 我添加了guava r09 gwt jar到我的类路径 并且

随机推荐