0

我正在使用脚本适配器,通过传递有效负载从“使用值搜索”事件中获取内容列表

在此处输入图像描述

当 Contend 加载到内容列表时,我有一个自定义视图来预览它们。但是,如果我单击 MIME 类型列,它会打开一个带有映射查看器的单独视图

所以我需要删除此列或使其不可点击

1)我将搜索值传递给内容列表的“使用值搜索”事件,我可以从哪里处理内容列表的竞争加载,我可以使用任何 Dojo 事件吗?

2)使用脚本适配器,我可以在不使用“响应过滤器”的情况下做到这一点

编辑 :

正如“Ivo Jonker”很好地解释的那样(在他的回答中 - “或尝试专门定位您页面上的小部件”和他的示例代码)

responsed = page.ContentList8.ecmContentList.getResultSet();
var cols = responsed.structure.cells[0];
        for (i=cols.length-1; i>0; i--){
            var col = cols[i];

            if (col.field=="mimeTypeIcon")
                cols.splice(i,1);
        }
page.ContentList78.ecmContentList.setResultSet(responsed);

我只是删除了这一行。再次感谢可爱的博客,希望你继续发表更多精彩的文章。

4

1 回答 1

1
  1. 通过 Search With Values 事件传递的值最终将由 icm.pgwidget.contentlist.dijit.DocumentSearchHandler 处理,该处理程序又创建一个 SearchTemplate 来执行搜索 (ecm.model.SearchTemplate.prototype.search)。一种选择是在 DocumentSearchHandler#query 的方面/之前/周围来操作搜索结果,并通过这种方式删除该列。

  2. 然而,接线没有提供任何句柄来为特定的查询-结果集组合实现这一点,让您要么在全球范围内修复此问题 (icm.pgwidget.contentlist.dijit.DocumentSearchHandler.prototype#query),要么尝试专门定位页面上的小部件。

就个人而言,考虑到#2,如果您认为全局解决方案不会成为问题,我会选择 responsefilter-option,或者我个人更喜欢创建一个简单的 ICM 小部件来实例化/实现“普通" ecm.widget.listView.ContentList 并公开一条线来设置 ecm.model.Resultset。

然后,您就可以在脚本适配器中创建自己的 Searchquery、删除列并传递结果集。

脚本适配器可能类似于:

var scriptadapter=this;

var queryParams={};
    queryParams.query = "SELECT * FROM Document where id in /*your list*/";
    queryParams.retrieveAllVersions = false;
    queryParams.retrieveLatestVersion = true;
    queryParams.repository = ecm.model.desktop.repositories[0];
    queryParams.resultsDisplay = {
        "sortBy": "{NAME}",
        "sortAsc": true,
        "columns": ["{NAME}"],
        "honorNameProperty": true};

    var searchQuery = new ecm.model.SearchQuery(queryParams);

    searchQuery.search(function(response/*ecm.model.Resultset*/){
        //remove the mimeTypeIcon
        var cols = response.structure.cells[0];
        for (i=cols.length-1; i>0; i--){
            var col = cols[i];
            if (col.field=="mimeTypeIcon")
                cols.splice(i,1);
        }

        //emit the resultset to your new contentlist, be sure to block the regular synchrounous output of the scriptadapter
        scriptadapter.onPublishEvent("icm.SendEventPayload",response);

        //The contentlist wire would simply do contentlist.setResultSet(response);
});
于 2018-07-12T10:15:49.600 回答