Windchill中MVC选中事件级联另一MVC内容
目录
一、背景
二、步骤示例
三、代码说明
一、背景
在创建/编辑对象的场景中,经常会有一些需要mvc表格相互联动的需求。本示例为通过wizard实现mvc勾选时,联动别的mvc表格的示例。
二、步骤示例
2.1 jsp页面的代码示例
<%@ 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页面代码示例
<%@ 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.oidvar tf = document.getElementById(oid+"_"+name);if (tf != null) {tf.value = value;}}
}</SCRIPT>
三、代码说明
本代码示例的核心技术点为hidden隐藏域的使用。请仔细留意代码中的使用。