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隐藏域的使用。请仔细留意代码中的使用。

相关推荐
SL_staff5 分钟前
3周搭完MES系统:JVS低代码+JVS-IoT物联网的实战记录
java·前端·低代码
秋天的一阵风6 分钟前
Vue 3 里被严重低估的 API:InjectionKey
前端·javascript·vue.js
MacroZheng12 分钟前
斩获20w star!Claude Code最强插件,AI编程必备!
java·人工智能·后端
kisshyshy13 分钟前
从递归到迭代,一文吃透二叉树的核心知识与 JavaScript 实现
javascript·算法·代码规范
铁皮饭盒1 小时前
Bun 多线程有多快?postMessage 传输字符串比 Node.js 快 400 倍!
前端·javascript·后端
唐青枫2 小时前
Java Spring WebFlux 实战指南:用 Mono、Flux 和 WebClient 写响应式接口
java·spring
To_OC11 小时前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode
kyriewen14 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
小bo波15 小时前
使用Thread子类创建线程 VS 使用Runnable接口创建线程的区别
java·多线程·thread·并发编程·runnable
山河木马15 小时前
矩阵专题0-webGL中的矩阵
javascript·webgl·计算机图形学