当前位置: 首页 > 面试题库 >

如何在Wicket数据表中插入“子行”

丌官招
2023-03-14
问题内容

我有一个AjaxFallbackDefaultDataTable包含每个测试结果一行。测试结果可能附有注释,需要在测试结果下方突出显示,希望可以提供类似于以下内容的表格:

| Test | Result | Appraisal |
|------|--------|-----------|
|  1   |  20.0  |   PASS    |
|  2   |  1.50  |   FAIL    |
| Note: This is an epic fail|
|  3   |  19.4  |   PASS    |
|  4   |  14.9  |   PASS    |

有什么方法可以使用Wicket
DataTable构造来实现此行插入(最好使用列跨越)。当我深入研究源代码时,我可以找到Item渲染器,但是没有一行可以处理。

目前,我有以下内容:

// Create the sortable data provider.
SortableDataProvider<TestResult> provider = new SortableDataProvider<TestResult>() {
    //... hibernate pagination code ...
};

List<IColumn> columns = new ArrayList<IColumn>();
columns.add(new TextFilteredPropertyColumn(new Model<String>("Test"), "test", "test"));
columns.add(new TextFilteredPropertyColumn(new Model<String>("Result"), "result", "result"));
columns.add(new TextFilteredPropertyColumn(new Model<String>("Appraisal"), "appraisal", "appraisal"));

// Create a new AJAX table using the sortable, filtered data provider.
final AjaxFallbackDefaultDataTable dataTable = new AjaxFallbackDefaultDataTable("testResultTable", columns.toArray(new IColumn[0]), provider, 20);// 20 = number of rows per page

问题答案:

我认为没有做到这一点的干净方法,您将不得不修改生成的HTML。

我会将自定义行为附加到自动生成所需HTML的行上,如下所示:

new AjaxFallbackDefaultDataTable<MyCustomObject>(
    id, columns, dataProvider, rowsPerPage){

    @Override
    protected Item<MyCustomObject> newRowItem(String id,
        int index,
        final IModel<MyCustomObject> model){
        Item<MyCustomObject> item = super.newRowItem(id, index, model);
        item.add(new AbstractBehavior(){

            private static final long serialVersionUID = 1L;

            /**
             * {@inheritDoc}
             */
            @Override
            public void onRendered(Component component){
                if(model.getObject().isEpicFail()){
                    component.getResponse().write(
                    "<tr><td colspan=\"3\">This is an epic fail</td></tr>");
                }
            }

        });
        return item;
    }

    private static final long serialVersionUID = 1L;

}


 类似资料:
  • 我有两个表和一个表来映射我以前的两个表的关系,我如何使用Spring data JPA高效自动地将数据插入到映射的表中?下面是表结构。 用户(id(PK),名称,电子邮件,userRoleId)角色(id(PK),名称,userRoleId)用户角色(id(PK),userId(FK<-User),roleId(FK<-Role))

  • 我想发出一个将数据插入数据库的请求。该表有4列:ID_DOCUMENT(PK)、ID_TASK、DESCRIPTION、FILEPATH 当我运行我的测试时,我得到了这个错误:由:org.hibernate.hql.ast.querysyntaxException引起的:预期打开,在第1行第32列附近发现'c'[insert into TaskDocumentEntity c(c.IDTask,c

  • 注意:在MySQL表中,此列的数据类型我选择了日期数据类型 我只是有问题的日期部分查询插入日期:

  • 问题内容: 我一直在看这段代码已有一段时间了,但我看不出问题出在哪里。我已经阅读了整个StackOverflow,但仍然看不到我的错误在哪里。 错误在第13行中,即thats 。我尝试通过http://www.w3schools.com/php/php_mysql_insert.asp帮助自己,但对我没有太大帮助。 问题答案: 警告: 切勿将 w3schools 用于学习目的。他们的教程中有很多错

  • 本文向大家介绍我们如何将数据插入MySQL表?,包括了我们如何将数据插入MySQL表?的使用技巧和注意事项,需要的朋友参考一下 要将数据插入到MySQL表中,我们需要使用INSERT INTO命令。我们必须在INSERT INTO命令中为表的所有列指定值。 语法 示例 假设我们有一个名为“ Student”的表,其中包含三列“ RollNo”,“ Name”和“ Class”,然后借助以下查询,我

  • 问题内容: 我创建了一个数据库名称movielibrarysystem,其中有3个表。 分别是类型,发布者和电影..​​.现在1个发布者可以有很多电影,而1个电影则有很多类型..在movie表中,发布者ID和typeid都充当外键。 我的问题是,如何在电影表中插入数据…我已经将数据插入到发行商和类型表中,但是我无法插入电影表中。 问题答案: 这就是你要做的。首先,发行人与电影之间的关系是一对多的-