dojo 从过滤内容列表中删除“MIME类型”列

oalqel3c  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(152)

我正在使用脚本适配器,方法是传递有效负载以从“使用值搜索”事件获取内容列表的竞争

当竞争被加载到内容列表,我有一个自定义视图来预览它们。但如果我点击MIME类型列,它会打开一个单独的视图与Map的查看器
因此,我需要删除此列或使其不可单击
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);

我只是删除此行。再次感谢和可爱的博客,希望你继续张贴更多伟大的文章。

nsc4cvqm

nsc4cvqm1#

1.通过“使用值搜索”事件传递的值最终将由icm.pgwidget.contentlist.dijit.DocumentSearchHandler处理,该处理程序进而创建一个SearchTemplate来执行搜索(ecm.model.SearchTemplate.prototype.search)。一个选项是在DocumentSearchHandler#查询之前/周围设置方面来处理搜索结果,并通过这种方式删除该列。
1.然而,连接没有提供任何句柄来实现特定查询-结果集组合的这一点,让您要么在全局范围内修复此问题(icm.pgwidget.contentlist.dijit.DocumentSearchHandler.prototype#query),要么尝试在页面上具体定位小部件。
就我个人而言,考虑到第二点,如果您觉得全局解决方案不会成为问题,我会选择responsefilter选项,或者我个人更喜欢创建一个简单的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);
});

相关问题