Windchill中MVC选中事件级联另一MVC内容

目录

一、背景

二、步骤示例

三、代码说明


一、背景

在创建/编辑对象的场景中,经常会有一些需要mvc表格相互联动的需求。本示例为通过wizard实现mvc勾选时,联动别的mvc表格的示例。

二、步骤示例

2.1 jsp页面的代码示例

html 复制代码
<%@ taglib prefix="jca" uri="http://www.ptc.com/windchill/taglib/components"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/components" prefix="jca"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/fmt" prefix="fmt"%> 

<%@ include file="/netmarkets/jsp/components/beginWizard.jspf"%>
<%@ include file="/netmarkets/jsp/components/includeWizBean.jspf"%>

<fmt:setLocale value="${localeBean.locale}"/>
<fmt:setBundle basename="ext.test.resource.SealedSampleResource"/>
<fmt:message var="tableLabel" key="saledSample.techCreate.title"/>
<fmt:message var="PRODUCTION_BOM_VERSION_LABEL" key="PRODUCTION_BOM_VERSION_LABEL"/>
<fmt:message var="SET_SALED_SAMPLE_DETAIL" key="SET_SALED_SAMPLE_DETAIL"/>
<fmt:message var="SET_PRINCIPAL" key="SET_PRINCIPAL"/>
	
<input type="hidden" name="wizardActionClass" value="ext.test.processors.TechnicalSealedSampleCreateProcessor" />
<input type="hidden" name="wizardActionMethod" value="execute" />
<input type="hidden" name="portlet" value="poppedup" />
	
<jca:wizard  title="${tableLabel}" buttonList="DefaultWizardButtons">
	<jca:wizardStep action="techSaledSample_step" type="saledSample" label="${SET_SALED_SAMPLE_DETAIL}"/>
</jca:wizard>

<input type="hidden" id="selectOid" name="selectOid">
<input type="hidden" id="soid" name="soid">
<input type="hidden" id="copyParentOid" name="copyParentOid">

<%@ include file="/netmarkets/jsp/util/end.jspf"%>
<script Language="JavaScript">
	
  var parentBuliderID="ext.test.builders.TechParentTableBuilder";
	var childBuliderID="ext.test.builders.TechChildTableBuilder";
	
  Ext.onReady(function() {        
	      var tables = tableUtils.getTable(parentBuliderID);	
	      tables.on('cellclick', function(table, rowIndex, columnIndex, event) {
	      	
	      		 if (columnIndex >= 0 && rowIndex >= 0) { 
				       var record = table.getStore().getAt(rowIndex);
				       if (PTC.isDefined(record)) {
				       		var oid = record.data.oid;
				       		//alert(oid);
				       		document.getElementById('copyParentOid').value = '';
				       		document.getElementById('selectOid').value = oid;
				       		document.getElementById('soid').value = oid;
				       		PTC.jca.table.Utils.reload(childBuliderID, null, true);
				          //loadCompenetPanel(record.data.oid);
				       }
				     }
	      	});
	});
	 
 	var loadCompenetPanel = function(oid) {	 
	var tableId = "promotion.addParticipants.ParticipantTable";
	var mform = getMainForm(); 
    var url="/netmarkets/jsp/ext/test/techSealedSample.jsp?soid="+oid;
    getElementHtml(Form.serialize(mform),tableId, true, url,false);
  };

</script>

2.2 step_jsp页面代码示例

html 复制代码
<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/components" prefix="jca"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/wrappers" prefix="w"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/fmt" prefix="fmt"%>
<%@ taglib uri="http://www.ptc.com/windchill/taglib/mvc" prefix="mvc"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="wctags"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page import="ext.test.partbom.util.PartBomCommonUtil,	 
								 java.util.ArrayList"				 
%> 

<jsp:useBean id="localeBean" class="com.ptc.netmarkets.util.beans.NmLocaleBean" scope="request"/>
<fmt:setLocale value="${localeBean.locale}"/>
<fmt:setBundle basename="ext.test.resource.SealedSampleResource"/>
<fmt:message var="tableLabel" key="techCreate.title"/>
<fmt:message var="PRODUCTION_BOM_VERSION_LABEL" key="PRODUCTION_BOM_VERSION_LABEL"/>
	
<%
	ArrayList list = (ArrayList)PartBomCommonUtil.getTypeLegalValues("ext.test.model.TechnicalSealedSample","ProductionBomVersion");
%>
<c:set var="internalList" value="<%=list%>"/>

<jsp:include page="${mvc:getComponentURL('ext.test.builders.TechParentTableBuilder')}" />

<jca:renderPropertyPanel>
 <w:comboBox propertyLabel="${PRODUCTION_BOM_VERSION_LABEL}" required="true" id="ProductionBomVersion" name="ProductionBomVersion" internalValues="${internalList}"  displayValues="${internalList}"/>
</jca:renderPropertyPanel>

<jsp:include page="${mvc:getComponentURL('ext.test.builders.TechChildTableBuilder')}" />
	
<jsp:include page="${mvc:getComponentURL('ext.test.builders.ChooseWTUserTableBuilder')}" />



<input type="hidden" name="selectedRows" id="selectedRows" value=""/> 
<input type="hidden" name="changeSubstituteLink" id="changeSubstituteLink" value=""/> 

<script>
	
Ext.ComponentMgr.onAvailable( 'ext.test.builders.TechChildTableBuilder',function (grid){
      PTC.util.tableDataManager.registerTableListener("ext.test.builders.TechChildTableBuilder");
});

function removeRow(event) {
       var tableID = tableUtils.findTableID(event);
       var selectedItems = getJCASelectedTableItems(tableID);

       if (selectedItems == null || selectedItems.length == 0 ) {
             JCAAlert('com.ptc.netmarkets.util.utilResource.NONE_CHECKED');
             return false;
       } else {
             if (JCAConfirm('com.ptc.netmarkets.util.utilResource.CONFIRM_DELETE')){
                 var selectedRow = "";
                 for(var i = 0; i < selectedItems.length; i++) {
                     selectedRow += selectedItems[i].value + "@@";
                 }
                 document.getElementById('selectedRows').value = selectedRow;
                 jsca.unSelectHiddenCheckboxes(tableID);
                 return true;
             }else{
                 return false;
             }
       }       
}

function removeGroups(event) {

	rowHandler.removeRowsFromParentTable(event);
  return false;
}

function setChange(name,value) {
	var table = PTC.jca.table.Utils.getTable("ext.test.builders.TechChildTableBuilder");
	var selections = table.getSelectionModel().getSelections();
	if (selections == null || selections.length == 0) {
		JCAAlert('com.ptc.core.agreements.agreementsResource.NOTHING_SELECTED');
		return;
	}
	for (var i = 0; i < selections.length; i++) {
		var selection = selections[i];
		var oid = selection.get(name).gui.id;
		var tf = document.getElementById(oid);
		if (tf != null) {
			for (var j = 0; j < tf.options.length; j++) {
				if (value == tf.options[j].value) {
					tf.options[j].selected = true;
				}
			}
		}
	}
}

function setAddress(values) {
	var table = PTC.jca.table.Utils.getTable("ext.test.builders.TechChildTableBuilder");
  var selections = table.getSelectionModel().getSelections();
  if (selections == null || selections.length == 0) {
    JCAAlert('com.ptc.core.agreements.agreementsResource.NOTHING_SELECTED');
    return;
  } 
  for (var i = 0; i < selections.length; i++) {
    var selection = selections[i];
    var id = selection.data.oid; 
    
    console.info(id);
    var valueStr = values.split(',');  
    for(var j=0; j< valueStr.length; j++) {
      var tagetId = id + valueStr[j];
      console.info(tagetId);
      document.getElementById(tagetId).checked = true;
    }
    
  }
}


function setChangeDate(name,value){
	var table = PTC.jca.table.Utils.getTable("ext.test.builders.TechChildTableBuilder");
	var selections = table.getSelectionModel().getSelections();
	if (selections == null || selections.length == 0) {
		JCAAlert('com.ptc.core.agreements.agreementsResource.NOTHING_SELECTED');
		return;
	}
	for (var i = 0; i < selections.length; i++) {
		var selection = selections[i];
		var oid = selection.data.oid
		var tf = document.getElementById(oid+"_"+name);
		if (tf != null) {
			tf.value = value;
		}
	}
}

</SCRIPT> 

三、代码说明

本代码示例的核心技术点为hidden隐藏域的使用。请仔细留意代码中的使用。

相关推荐
qq. 28040339842 小时前
react hooks
前端·javascript·react.js
胖咕噜的稞达鸭2 小时前
C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
java·c语言·开发语言·数据结构·c++·redis·算法
陈小桔3 小时前
Springboot之常用注解
java·spring boot·后端
Gazer_S3 小时前
【前端状态管理技术解析:Redux 与 Vue 生态对比】
前端·javascript·vue.js
Y学院4 小时前
vue的组件通信
前端·javascript·vue.js
患得患失9494 小时前
【ThreeJs】【伪VR】用 Three.js 实现伪 VR 全景看房系统:低成本实现 3D 级交互体验
javascript·3d·vr
code小毛孩4 小时前
如何简单的并且又能大幅度降低任务队列的锁粒度、提高吞吐量?
java·jvm·数据库
你不是我我4 小时前
【Java开发日记】请介绍类加载过程,什么是双亲委派模型?
java·开发语言
牢七4 小时前
java10
java