windchill 11.0 新建文档客制化之文档类型联动

问题:在新建文档时,选择了文档类型,若文档有模板,系统无法自动选择一个模板,特别是文档只有一个模板时,若能自动选择模板,则能进一步提高工作效率。

客制化方法为修改\codebase\netmarkets\jsp\document\createDocumentSetTypeAndAttributesWizStep.jsp件

// 找到以下代码:
// From the common component we are calling our local pickerGo which calls the original pickerGo and then calls populateTemplates
pickerGo = pickerGo.wrap(function(original,value, currentObjectHandle, template) {
   original(value, currentObjectHandle, template);
   if (!template)
	   populateTemplates(value);
})
//将上面的代码替换成下面的代码
function custUpdateTemplatesCombo(){
	var templatesCombo = document.getElementById("templatesCombo");
	if(!templatesCombo){
		return;
	}
	var currentValue = "";
	var templatesOptions = templatesCombo.children;
	for(var i=0;i<templatesOptions.length;i++){
		var templatesOptionValue = templatesOptions[i].value;
		if(templatesOptionValue){
			currentValue = templatesOptionValue;
			break;
		}
	}
	templatesCombo.setValue(currentValue);
	custOnTemplateSelection(templatesCombo);
}
function custOnTemplateSelection(template){
    var urlForDriverAttributes = document.getElementsByName('urlForDriverAttributesForTemplate')[0];
    var objectHandle = document.getElementsByName('objectHandleForTemplate')[0];
    if (template.value == ""){
        noTemplateSelected();
        var lastSelectedType = document.getElementById('lastSelectedType');
        custPickerGo(lastSelectedType.value,objectHandle.value);
        refreshDriverAttributes(urlForDriverAttributes.value);
    } else{
        templateSelected();
        custPickerGo(template.value,objectHandle.value,'true');
        refreshDriverAttributes(urlForDriverAttributes.value);
        loadAttachmentsStep();
    }
}
custPickerGo = pickerGo.wrap(function(original,value, currentObjectHandle, template) {
   original(value, currentObjectHandle, template);
   if (!template){
	   populateTemplates(value);
   }
})
// From the common component we are calling our local pickerGo which calls the original pickerGo and then calls populateTemplates
pickerGo = pickerGo.wrap(function(original,value, currentObjectHandle, template) {
   original(value, currentObjectHandle, template);
   if (!template){
	   populateTemplates(value);
	   custUpdateTemplatesCombo();
   }
})

主要修改点为:

​ 1.新增custUpdateTemplatesCombo函数用以自动选择第一个模板,

​ 2.并调用模板下拉框的onchange事件处理方法OnTemplateSelection,但因为直接OnTemplateSelection方法会产生循环递归,所以需要修改下,即复制其定义的代码创建新的函数custOnTemplateSelection,并调用此方法。

​ 3.custOnTemplateSelection方法在原来调用pickerGo函数的地方改调用custPickerGo函数,此函数也是参照pickerGo函数定义的

​ 4.custPickerGo与原pickerGo函数代码完全一致

​ 5.修改pickerGo方法,在调用populateTemplates函数的后面增加调用custUpdateTemplatesCombo函数。

至此即实现了自动选择模板的功能。

— 客制化原因可能实际的有所不同,欢迎wx13451782717交流。

你可能感兴趣的:(windchill,java,java,经验分享)