Windchill 11文件夹选择组件使用记

使用的是windchill 11.0

​ 因工作需要,需要在自定义的软属性上使用文件夹选择组件,之前都没有使用过此组件,所以经过很长时间的研究终于成功使用了,所以记录下方法,以供需要的人以参考。此方法可能不是最好的实现方式,若有更好的方式也欢迎评论留言。下面具体介绍下使用方法

  1. 为软属性配置datautility(具体操作不详述),dataUtility返回LocationInputComponent,并增加onchange事件

    LocationInputComponent locationInputComponent = new LocationInputComponent(
                            valueInputComponent.getLabel(),
                            preGeneratedFolder, // 默认显示的文件夹OID,不能为空
                            oldDisplayValue,  // 显示值,这里是文件夹路径,如:/xxx库/测试1
                            preSelectedContext // 默认文件夹所属容器OID,不能为空。
                    );
                    locationInputComponent.addHiddenField("selectedFolderFromFolderContext", preGeneratedFolder);  // 添加隐藏字段,key必须为 selectedFolderFromFolderContext
                    locationInputComponent.setId(valueInputComponent.getId());
                    locationInputComponent.setName(valueInputComponent.getName());
                    locationInputComponent.setColumnName(valueInputComponent.getColumnName());
                    locationInputComponent.setRequired(true);
                    locationInputComponent.getLocationTextBox().addJsAction("onchange", "javascript:setTargetLocValue(this)"); // 增加此方法用于将选择的文件夹赋值到当前组件上,不然无法使用 --可能有更好的方式
    
  2. 在对应的jsp页面上提供setTargetLocValue方法

    // 将selectedFolderFromFolderContext 组件上的值 复制到其兄弟组件(排除type为text ---此为显示目录路径的组件,不需要赋其他值,否则显示有问题)
    function setTargetLocValue(thisTarget){
            var newValue = thisTarget.parentNode.querySelector('input[name="selectedFolderFromFolderContext"]').value;
            thisTarget.parentNode.querySelectorAll('input').forEach(el=>{
                if(el.getAttribute("type") != 'text'){
                    el.value = newValue
                }
            });
        }
    

    以上两步即可正常使用LocationInputComponent组件。当然对应属性的显示也应该使用dataUtility处理下,否则显示的是文件夹的OID(也不在此详述)。

你可能感兴趣的:(其他,Windchill,windchill,11,LocationInput,文件夹选择组件)