Autor Thema: expandAll löscht Selektion  (Gelesen 6975 mal)

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
expandAll löscht Selektion
« am: 04.10.12 - 10:54:31 »
Hi zusammen,
ich habe eine kategorisierte Ansicht (in einer CustomControl, die via einem Dialog angezeigt wird), die zweite Spalte enthält eine Checkbox zum auswählen von Dokumenten.
Wenn ich nun ein Dok anhake und eine Kategorie auf oder zu klappe, verschwindet der Haken wieder.

Das gleiche passiert natürlich auch, wenn ich das via Button mache.

Code:
var viewPanel = getComponent("viewPanel1");
var model = viewPanel.getDataModel();
var container = model.getDominoViewDataContainer();
container.expandAll()

Kann ich das irgendwie unterdrücken/umgehen?

Danke & Gruß,
Buzzy

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: expandAll löscht Selektion
« Antwort #1 am: 04.10.12 - 13:33:51 »
Hier ein Lösungsvorschlag:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

	<xp:viewPanel rows="30" id="viewPanel1" >
		<xp:this.facets>
			<xp:pager partialRefresh="true" layout="Previous Group Next"
				xp:key="footerPager" id="pager1">
			</xp:pager>
			<xp:scriptBlock id="scriptBlockViewPanel" xp:key="south">
				<xp:this.value>
					<![CDATA[
						var data = new Array();

						#{javascript:
							var viewPanel = getComponent("viewPanel1");
							var vPanelId = getClientId( "viewPanel1" );
							
							var m:java.util.Map = facesContext.getExternalContext().getRequestParameterMap();
							var it:java.util.Iterator = m.keySet().iterator();
							var data = new java.util.Vector();
							
							while( it.hasNext() ){							
								var key = it.next();
								if( key.toString().indexOf( vPanelId ) != (-1)  ){
									data.push( m.get(key) );
								}							
							}
															
							var jsCode = "";
							for( i=0; i< data.size(); i++){
								jsCode += 'data["' + data.get(i) + '"]="' + data.get(i) + '";\n'
							}
							 return jsCode
						}
					dojo.query(".xspCheckBoxViewColumn").forEach( function(node) {
    					if( data[node.value] )
        					node.checked = true;
        			})]]>
        		</xp:this.value>
			</xp:scriptBlock>
		</xp:this.facets>
		<xp:this.data>
			<xp:dominoView var="view1" viewName="All"></xp:dominoView>
		</xp:this.data>
		<xp:viewColumn columnName="Form" id="viewColumn1"
			showCheckbox="true">
			<xp:viewColumnHeader value="Form" id="viewColumnHeader1"></xp:viewColumnHeader>
		</xp:viewColumn>
	</xp:viewPanel>

</xp:view>



Das ganze funktioniert dadurch, das bei jeden Refresh ein CSJS-Script generiert wird, das die Selektion wieder herstellt. So bleibt di Selektion für ausgeklappte Kategorien erhalten. Für's Pagern müsste die Selektion im viewScope zwischengespeichert werden.

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: expandAll löscht Selektion
« Antwort #2 am: 05.10.12 - 08:04:23 »
Ich erstarre vor Ehrfurcht :-O

Wenn ich noch so unverschämt sein dürfte zu fragen, ob das auch auf eine Selektion anpassbar ist, die zugeklappt wird? Dann verschwindet der Haken nämlich auch - nur wenn die Kategorie offen bleibt, bleibt auch der Haken erhalten.

Besten Dank schon mal,
Buzzy

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: expandAll löscht Selektion
« Antwort #3 am: 05.10.12 - 08:56:09 »
Argh, hier die noch simplere Variante. Damit geht sowohl das Pagen als auch das Zu-/Aufklappen.
Einzig bei neuladen / Full refresh etc. ist die Selektion weg:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
	xmlns:xp_1="http://www.ibm.com/xsp/coreex">

	<xp:viewPanel rows="3" id="viewPanel1">
		<xp:this.facets>
			<xp:pager partialRefresh="true" layout="Previous Group Next"
				xp:key="footerPager" id="pager1">
			</xp:pager>
				<xp:scriptBlock id="scriptBlockViewPanel" xp:key="south">
					<xp:this.value>
					<![CDATA[
						dojo.addOnLoad( function(){
							dojo.query(".xspCheckBoxViewColumn").connect('onclick', function() {
							    selDocs[ this.id ] = this.checked; 
							});
							rebuildDocSelection();   
						});
						
					]]></xp:this.value>
				</xp:scriptBlock>
			</xp:this.facets>
		<xp:this.data>
			<xp:dominoView var="view1" viewName="All"></xp:dominoView>
		</xp:this.data>
		<xp:viewColumn columnName="Form" id="viewColumn1"
			showCheckbox="true">
			<xp:viewColumnHeader value="Form" id="viewColumnHeader1"></xp:viewColumnHeader>
		</xp:viewColumn>
	</xp:viewPanel>
	<xp:scriptBlock id="scriptBlockViewPanelHelper">
		<xp:this.value>
			<![CDATA[
			var selDocs = new Array();
			function rebuildDocSelection(){ 
    			   for( e in selDocs ){
    				try{
        			   dojo.byId( e ).checked = selDocs[e];
        			}catch(e){}
    			   }
			}
			]]>
		</xp:this.value>
	</xp:scriptBlock>
</xp:view>

Edit:
Ein Detail fehlt allerdings noch: Die Selektion zu merken ist eine Sache, die selektierten Dokumente an den Server zu senden eine andere... Das muss ich noch basteln!
« Letzte Änderung: 05.10.12 - 09:11:10 von Sven Hasselbach »

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: expandAll löscht Selektion
« Antwort #4 am: 05.10.12 - 10:30:37 »
Klappt - aber nur, wenn ich den Code in eine CC einbaue und die dann in eine neue XPage einfüge. Wenn ich selbige CC dann in meine bestehende XPage einbaue, krieg ich die Meldung:

"Beim Aktualisieren einiger Seitenbereiche ist ein Fehler aufgetreten.   rebuildDocSelection is not defined"

Anmerkung: die CC liegt in einem Dialog und wird via XSP.openDialog('#{id:inPlaceDialog1}') "aufgepoppt" - kann das damit zu tun habe?

Danke,
Buzzy


Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: expandAll löscht Selektion
« Antwort #5 am: 08.10.12 - 11:19:02 »
Ja, daran liegt es. Poste bitte mal deinen SourceCode.

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: expandAll löscht Selektion
« Antwort #6 am: 09.10.12 - 07:21:21 »
Moing,
also das ist der Code, in dem ich Deinen Vorschlag eingebaut habe:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
   xmlns:xp="http://www.ibm.com/xsp/core"
   xmlns:xp_1="http://www.ibm.com/xsp/coreex"
>

   <xp:this.data>
      <xp:dominoView
         var="view2"
         viewName="helperViewInventarPicker"
      >
      </xp:dominoView>
   </xp:this.data>
   
   
   <xp:table>
      <xp:tr>
         <xp:td><xp:button id="button5" value="OK">
                  <xp:eventHandler event="onclick" submit="true" refreshMode="partial">
                     <xp:this.action><![CDATA[#{javascript:var ansicht = getComponent("viewPanel1");
var docIDArray = ansicht.getSelectedIds();

for (i=0; i < docIDArray.length; i++) {
   var docId = docIDArray;
   print("schreibe die UNID des Liniendoks ins Inventar-Dok: " + docId)
   var doc = database.getDocumentByID(docId);
   doc.replaceItemValue("linieUNID", document1.getDocument().getUniversalID());
   if (doc.save()) {
      print("Speichern erfolgreich!")
   } else {
      print("Fehler beim Speichern!")
   }   
}

getComponent("inPlaceDialog1").hide("repeat1")

//getComponent("dialogContent1").setRendered(false)
//getComponent("addRemovePanel").setRendered(true)}]]></xp:this.action>

                  </xp:eventHandler>
               </xp:button>
               &#160;&#160;
               <xp:button value="Abbrechen" id="button1">
                  <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                     <xp:this.action><![CDATA[#{javascript:getComponent("inPlaceDialog1").hide()}]]></xp:this.action>
                  </xp:eventHandler>
               </xp:button>
               &#160;&#160;

               <xp:button value="  alles zuklappen" id="button3" icon="/minus.jpg">
                  <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                     <xp:this.action><![CDATA[#{javascript:var viewPanel = getComponent("viewPanel1");
var model = viewPanel.getDataModel();
var container = model.getDominoViewDataContainer();
container.collapseAll();}]]></xp:this.action>
                  </xp:eventHandler>
               </xp:button>
               &#160;&#160;
               <xp:button value="  alles aufklappen" id="button4" icon="/plus.jpg">
                  <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                     <xp:this.action><![CDATA[#{javascript:var viewPanel = getComponent("viewPanel1");
var model = viewPanel.getDataModel();
var container = model.getDominoViewDataContainer();
container.expandAll()}]]></xp:this.action>
                  </xp:eventHandler>
               </xp:button></xp:td>
      </xp:tr>
      <xp:tr>
         <xp:td><xp:viewPanel rows="30" id="viewPanel1" value="#{view2}" viewStyle="width:100%">
      <xp:this.facets>
         <xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="footerPager" id="pager1">
         </xp:pager>
         <xp:scriptBlock id="scriptBlockViewPanel" xp:key="south">
            <xp:this.value>
               <![CDATA[
                  dojo.addOnLoad( function(){
                     dojo.query(".xspCheckBoxViewColumn").connect('onclick', function() {
                         selDocs[ this.id ] = this.checked;
                     });
                     rebuildDocSelection();   
                  });
                  
               ]]></xp:this.value>
         </xp:scriptBlock>
      </xp:this.facets>
      <xp:this.data>
         <xp:dominoView var="view1" viewName="helperViewInventarPickerAll">
         </xp:dominoView>
      </xp:this.data>
      
      <xp:viewColumn columnName="InventarTyp" id="viewColumn3"><xp:this.facets><xp:viewColumnHeader value="Inventar typ" xp:key="header" id="viewColumnHeader3"></xp:viewColumnHeader></xp:this.facets></xp:viewColumn><xp:viewColumn columnName="Hersteller" id="viewColumn4" showCheckbox="true"><xp:this.facets><xp:viewColumnHeader value="Hersteller" xp:key="header" id="viewColumnHeader4"></xp:viewColumnHeader></xp:this.facets></xp:viewColumn><xp:viewColumn columnName="ModellTyp" id="viewColumn5"><xp:this.facets><xp:viewColumnHeader value="Modell/ typ" xp:key="header" id="viewColumnHeader5"></xp:viewColumnHeader></xp:this.facets></xp:viewColumn><xp:viewColumn columnName="Baujahr" id="viewColumn6"><xp:this.facets><xp:viewColumnHeader value="Baujahr" xp:key="header" id="viewColumnHeader6"></xp:viewColumnHeader></xp:this.facets></xp:viewColumn></xp:viewPanel></xp:td>
      </xp:tr>
      <xp:tr>
         <xp:td></xp:td>
      </xp:tr>
      <xp:tr>
         <xp:td></xp:td>
      </xp:tr>
   </xp:table><xp:scriptBlock id="scriptBlockViewPanelHelper">
      <xp:this.value>
         <![CDATA[
         var selDocs = new Array();
         function rebuildDocSelection(){
                for( e in selDocs ){
                try{
                    dojo.byId( e ).checked = selDocs[e];
                 }catch(e){}
                }
         }
         ]]>
      </xp:this.value>
   </xp:scriptBlock></xp:view>

Brauchst Du auch den Code der CC, in der wiederum der obige Code eingebaut wurde?

Danke & Gruß,
Buzzy

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: expandAll löscht Selektion
« Antwort #7 am: 09.10.12 - 09:24:49 »
Ja bitte.

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: expandAll löscht Selektion
« Antwort #8 am: 09.10.12 - 09:48:32 »
Ja bitte.

Here we go:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
	xmlns:xp="http://www.ibm.com/xsp/core"
	xmlns:xc="http://www.ibm.com/xsp/custom"
	xmlns:xe="http://www.ibm.com/xsp/coreex"
>

	<xp:this.data>
		<xp:dominoDocument
			var="document1"
			formName="Liniendokument"
		>
		</xp:dominoDocument>
		<xp:dominoView
			var="view2"
			viewName="helperViewInventar"
		>
		</xp:dominoView>
		<xp:dominoView
			var="viewZuordnung"
			viewName="helperViewLiniendokInventar"
		>
		</xp:dominoView>
	</xp:this.data>

	<xp:this.resources>
		<xp:styleSheet href="/cssTest.css"></xp:styleSheet>
	</xp:this.resources>
	<xp:this.beforeRenderResponse><![CDATA[#{javascript:var con = facesContext.getExternalContext(); 
var request:com.sun.faces.context.MyHttpServletRequestWrapper = con.getRequest(); 
var map:java.util.Map = request.getParameterMap(); 
var fileDataName = "file"; //name of the POST request parameter that contains the file 
var fileData:com.ibm.xsp.http.UploadedFile = map.get( fileDataName ); 
var tempFile:java.io.File = fileData.getServerFile();}]]></xp:this.beforeRenderResponse>
	<xp:table>
		<xp:tr>
			<xp:td colspan="2">
				<xp:button
					value="Bearbeiten"
					id="button1"
				>
					<xp:this.rendered><![CDATA[#{javascript://Button wird ausgeblendet, wenn sich das Dok nicht im EditMode befindet
return !document1.isEditable()}]]></xp:this.rendered>

					<xp:eventHandler
						event="onclick"
						submit="true"
						refreshMode="complete"
						id="eventHandler1"
					>
						<xp:this.action>
							<xp:openPage
								name="/xInventar.xsp"
								target="editDocument"
							>
							</xp:openPage>
						</xp:this.action>
					</xp:eventHandler>
				</xp:button>
				&#160;&#160;
				<xp:button
					value="Schließen ohne Speichern"
					id="button2"
				>
					<xp:this.rendered><![CDATA[#{javascript://Button wird angezeigt, wenn sich das Dok im EditMode befindet
return document1.isEditable()}]]></xp:this.rendered>
					<xp:eventHandler
						event="onclick"
						submit="true"
						refreshMode="complete"
						immediate="true"
						save="false"
						id="eventHandler2"
					>
						<xp:this.action>
							<xp:openPage name="$$PreviousPage"></xp:openPage>
						</xp:this.action>
					</xp:eventHandler>
				</xp:button>
				&#160;&#160;
				<xp:button
					id="button3"
					value="Speichern"
				>
					<xp:this.rendered><![CDATA[#{javascript://Button wird angezeigt, wenn sich das Dok im EditMode befindet
return document1.isEditable()}]]></xp:this.rendered>
					<xp:eventHandler
						event="onclick"
						submit="true"
						refreshMode="complete"
						id="eventHandler3"
					>
						<xp:this.action>
							<xp:save></xp:save>
						</xp:this.action>
					</xp:eventHandler>
				</xp:button>
				&#160;&#160;
				<xp:button id="button4">
					<xp:this.value><![CDATA[Speichern & Schließen]]></xp:this.value>
					<xp:this.rendered><![CDATA[#{javascript://Button wird angezeigt, wenn sich das Dok im EditMode befindet
return document1.isEditable()}]]></xp:this.rendered>
					<xp:eventHandler
						event="onclick"
						submit="true"
						refreshMode="complete"
						immediate="false"
						save="false"
						id="eventHandler4"
					>
						<xp:this.action>


							<xp:actionGroup>
								<xp:actionGroup>
									<xp:saveDocument></xp:saveDocument>
									<xp:openPage
										name="$$PreviousPage"
									>
									</xp:openPage>
								</xp:actionGroup>

							</xp:actionGroup>
						</xp:this.action>
					</xp:eventHandler>
				</xp:button>
				&#160;&#160;
				<xp:button id="button7">
					<xp:this.value><![CDATA["Freeze"]]></xp:this.value>
					<xp:this.rendered><![CDATA[#{javascript:getComponent("freeze1").getValue() != "1"}]]></xp:this.rendered><xp:eventHandler
						event="onclick"
						submit="true"
						refreshMode="complete"
					id="eventHandler5">
						<xp:this.action><![CDATA[#{javascript:var thisDoc:NotesDocument = document1.getDocument();
var thisUNID = thisDoc.getUniversalID();
var db:NotesDatabase = thisDoc.getParentDatabase();
var inventarView:NotesView = db.getView("(inventarByLinieUNID)");
var col:NotesDocumentCollection = inventarView.getAllDocumentsByKey(thisUNID);

print("gefundene InvenarDoks zu akt. LinienDok: " + col.getCount())

var invDoc:NotesDocument;
invDoc = col.getFirstDocument();

while (invDoc != null) {
	print(invDoc.getUniversalID());
	invDoc.replaceItemValue("Freeze", "1");
	invDoc.save();
	invDoc = col.getNextDocument(invDoc);
}

thisDoc.replaceItemValue("Freeze", "1");
thisDoc.save();
}]]></xp:this.action>
					</xp:eventHandler>
				</xp:button>
			&#160;&#160;<xp:button id="button8">
					<xp:this.value><![CDATA["Unfreeze"]]></xp:this.value>
					<xp:this.rendered><![CDATA[#{javascript:getComponent("freeze1").getValue() == "1"}]]></xp:this.rendered><xp:eventHandler
						event="onclick"
						submit="true"
						refreshMode="complete"
						id="eventHandler8"
					>
						<xp:this.action><![CDATA[#{javascript:var thisDoc:NotesDocument = document1.getDocument();
var thisUNID = thisDoc.getUniversalID();
var db:NotesDatabase = thisDoc.getParentDatabase();
var inventarView:NotesView = db.getView("(inventarByLinieUNID)");
var col:NotesDocumentCollection = inventarView.getAllDocumentsByKey(thisUNID);

print("gefundene InvenarDoks zu akt. LinienDok: " + col.getCount())

var invDoc:NotesDocument;
invDoc = col.getFirstDocument();

while (invDoc != null) {
	print(invDoc.getUniversalID());
	invDoc.replaceItemValue("Freeze", "");
	invDoc.save();
	invDoc = col.getNextDocument(invDoc);
}

thisDoc.replaceItemValue("Freeze", "");
thisDoc.save();
}]]></xp:this.action>
					</xp:eventHandler>
</xp:button></xp:td>

		</xp:tr>
		<xp:tr>
			<xp:td rendered="false">
				<xp:label
					value="Freeze:"
					id="freeze_Label1"
					for="freeze1"
				>
				</xp:label>
			</xp:td>
			<xp:td rendered="false">
				<xp:inputText
					value="#{document1.Freeze}"
					id="freeze1"
				>
				</xp:inputText>
			</xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td
				colspan="2"
				styleClass="Bereich"
			>
				<xp:span style="font-weight:bold;font-size:12pt">
				</xp:span>
				<xp:span
					style="font-weight:bold;font-size:12pt"
					styleClass="Bereich"
				>
					Anlage / Ort
				</xp:span>
				<xp:span styleClass="Bereich"></xp:span>
			</xp:td>

		</xp:tr>
		<xp:tr>
			<xp:td>
				<xp:label
					value="Anlagenbezeichnung:"
					id="liniendokAnlagenbezeichnung_Label1"
					for="liniendokAnlagenbezeichnung1"
				>
				</xp:label>
			</xp:td>
			<xp:td>
				<xp:inputText
					value="#{document1.liniendokAnlagenbezeichnung}"
					id="liniendokAnlagenbezeichnung1"
				>
				</xp:inputText>
			</xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td>
				<xp:label
					value="Lokation:"
					id="liniendokLokation_Label1"
					for="liniendokLokation1"
				>
				</xp:label>
			</xp:td>
			<xp:td>
				<xp:inputText
					value="#{document1.liniendokLokation}"
					id="liniendokLokation1"
				>
				</xp:inputText>
			</xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td>
				<xp:label
					value="Maschinennummer:"
					id="liniendokMaschinennummer_Label1"
					for="liniendokMaschinennummer1"
				>
				</xp:label>
			</xp:td>
			<xp:td>
				<xp:inputText
					value="#{document1.liniendokMaschinennummer}"
					id="liniendokMaschinennummer1"
				>
				</xp:inputText>
			</xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td>

				<xp:label
					value="Kommentar"
					id="label1"
				>
				</xp:label>
			</xp:td>
			<xp:td>

			</xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td>
				<xp:label
					id="label2"
					value="Anhänge"
				>
				</xp:label>
			</xp:td>
			<xp:td>
				<xp:fileUpload
					id="fileUpload1"
					value="#{document1.liniendokBody}"
				>
				</xp:fileUpload>
			</xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td></xp:td>
			<xp:td>
				<xp:fileDownload
					rows="30"
					id="fileDownload1"
					displayLastModified="false"
					value="#{document1.liniendokBody}"
				>
				</xp:fileDownload>
			</xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td
				colspan="2"
				styleClass="Bereich"
			>
				zugeordn
				<xp:span styleClass="Bereich"></xp:span>
				etes Inventar
			</xp:td>

		</xp:tr>
		<xp:tr>
			<xp:td></xp:td>
			<xp:td></xp:td>
		</xp:tr>
		<xp:tr>
			<xp:td colspan="2"><xp:this.rendered><![CDATA[#{javascript:getComponent("freeze1").getValue() == "1"}]]></xp:this.rendered>
				<xp:label
					id="label3" styleClass="hinweis">
				<xp:this.value><![CDATA[Dieses Liniendokument wurde "gefreezed" - deshalb können keine Maschinen hinzugefügt oder entfernt werden!]]></xp:this.value></xp:label></xp:td>
			
		</xp:tr>
		<xp:tr>
			<xp:td colspan="2">
				<xp:panel id="addRemovePanel">
					<xp:this.rendered><![CDATA[#{javascript:getComponent("freeze1").getValue() != "1"}]]></xp:this.rendered>
					<xp:button
						value="Maschine hinzufügen"
						id="button5"
					>
						<xp:eventHandler
							event="onclick"
							submit="false"
						id="eventHandler6">
							<xp:this.script><![CDATA[XSP.openDialog('#{id:inPlaceDialog1}')]]></xp:this.script>
						</xp:eventHandler>
					</xp:button>
					&#160;&#160;&#160;
					<xp:button
						value="Maschine entfernen"
						id="button6"
					>
						<xp:eventHandler
							event="onclick"
							submit="true"
							refreshMode="complete"
							id="eventHandler7"
						>
							<xp:this.action><![CDATA[#{javascript:var ansicht = getComponent("viewPanelEmbedded");
var docIDArray = ansicht.getSelectedIds();

for (i=0; i < docIDArray.length; i++) {
	var docId = docIDArray[i];
	print("schreibe die UNID des Liniendoks ins Inventar-Dok: " + docId)
	var doc = database.getDocumentByID(docId); 
	doc.replaceItemValue("linieUNID", "");
	if (doc.save()) {
		print("Speichern erfolgreich!")
	} else {
		print("Fehler beim Speichern!")
	}	
}}]]></xp:this.action>
						</xp:eventHandler>
					</xp:button>
				</xp:panel>


				<xe:dialog id="inPlaceDialog1">
					<xe:this.title><![CDATA[Wählen Sie die hinzuzufügenden Maschinen und klicken Sie auf "OK"]]></xe:this.title>
					<xc:ccInventarPicker></xc:ccInventarPicker>
				</xe:dialog>
				<xp:br id="br1"></xp:br>
			</xp:td>

		</xp:tr>
		<xp:tr>
			<xp:td colspan="2">

				<xp:panel>
					<xp:viewPanel
						rows="30"
						id="viewPanelEmbedded"
					>
						<xp:this.facets>
							<xp:pager
								partialRefresh="true"
								layout="Previous Group Next"
								xp:key="headerPager"
								id="pager1"
							>
							</xp:pager>
						</xp:this.facets>

						<xp:this.data>
							<xp:dominoView
								var="view1"
								viewName="helperViewLiniendokInventar"
								categoryFilter="#{javascript:document1.getDocument().getUniversalID()}"
							>
							</xp:dominoView>
						</xp:this.data>
						<xp:viewColumn
							columnName="linieUNID"
							id="viewColumn1"
							style="width:150px"
							displayAs="hidden"
							rendered="false"
						>
							<xp:viewColumnHeader
								value="Linie u n i d"
								id="viewColumnHeader1"
								rendered="false"
							>
							</xp:viewColumnHeader>
						</xp:viewColumn>
						<xp:viewColumn
							id="viewColumn4"
							columnName="$2"
							displayAs="hidden"
						>
							<xp:this.facets>
								<xp:viewColumnHeader
									xp:key="header"
									id="viewColumnHeader4"
									value="$2"
									rendered="false"
								>
								</xp:viewColumnHeader>
							</xp:this.facets>


						</xp:viewColumn>
						<xp:viewColumn
							columnName="InventarTyp"
							id="viewColumn2"
							style="width:200px"
							showCheckbox="true"
						>
							<xp:viewColumnHeader
								value="Inventar typ"
								id="viewColumnHeader2"
								sortable="true"
							>
							</xp:viewColumnHeader>
						</xp:viewColumn>
						<xp:viewColumn
							columnName="Bezeichnung"
							id="viewColumn3"
							style="width:200px"
						>
							<xp:viewColumnHeader
								value="Bezeichnung"
								id="viewColumnHeader3"
							>
							</xp:viewColumnHeader>
						</xp:viewColumn>
						<xp:viewColumn
							id="viewColumn5"
							columnName="spezMaxLP"
						>
							<xp:this.facets>
								<xp:viewColumnHeader
									xp:key="header"
									id="viewColumnHeader5"
									value="Max l p"
								>
								</xp:viewColumnHeader>
							</xp:this.facets>
						</xp:viewColumn>
						<xp:viewColumn
							id="viewColumn6"
							columnName="spezBauformMin"
						>
							<xp:this.facets>
								<xp:viewColumnHeader
									xp:key="header"
									id="viewColumnHeader6"
									value="Min.  bauform"
								>
								</xp:viewColumnHeader>
							</xp:this.facets>
						</xp:viewColumn>
						<xp:viewColumn
							id="viewColumn7"
							columnName="spezBauformMax"
						>
							<xp:this.facets>
								<xp:viewColumnHeader
									xp:key="header"
									id="viewColumnHeader7"
									value="Max.  bauform"
								>
								</xp:viewColumnHeader>
							</xp:this.facets>
						</xp:viewColumn>
						<xp:viewColumn
							id="viewColumn8"
							columnName="spezMaxBauteilhoehe"
						>
							<xp:this.facets>
								<xp:viewColumnHeader
									xp:key="header"
									id="viewColumnHeader8"
									value="Max.  bauteilhöhe"
								>
								</xp:viewColumnHeader>
							</xp:this.facets>
						</xp:viewColumn>
						<xp:viewColumn
							id="viewColumn9"
							columnName="spezMinPitch"
						>
							<xp:this.facets>
								<xp:viewColumnHeader
									xp:key="header"
									id="viewColumnHeader9"
									value="Min.  pitch"
								>
								</xp:viewColumnHeader>
							</xp:this.facets>
						</xp:viewColumn>
					</xp:viewPanel>
				</xp:panel>
			</xp:td>

		</xp:tr>
		<xp:tr>
			<xp:td></xp:td>
			<xp:td></xp:td>
		</xp:tr>
	</xp:table>
</xp:view>

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: expandAll löscht Selektion
« Antwort #9 am: 09.10.12 - 15:13:43 »
Das Problem liegt in diesem Fall daran, das die Funktion noch nicht geladen d.h. im Sourcecode des Browsers vorhanden ist.
Erst mit dem Aufruf von "show" wird ein Partial Refresh ausgelöst, der den Code dann nachlädt. Daher die Fehlermeldung.

Bitte entferne den Scriptblock mit der "refreshSelectedDoc"-Funktion aus Deinem Dialog und füge diesen auf der XPage ein.
Der Code müsste dann in etwa so aussehen:

Code
<xe:dialog id="inPlaceDialog1">
	<xe:this.title><![CDATA[Wählen Sie die hinzuzufügenden Maschinen und klicken Sie auf "OK"]]></xe:this.title>
	<xe:this.onShow><![CDATA[selDocs = new Array();]]></xe:this.onShow>
	<xe:this.onHide><![CDATA[selDocs = new Array();]]></xe:this.onHide>
	<xc:ccInventarPicker></xc:ccInventarPicker>
</xe:dialog>
<xp:scriptBlock id="scriptBlockViewPanelHelper">
	<xp:this.value>
    	<![CDATA[
        	var selDocs = new Array();
         	function rebuildDocSelection(){
            	for( e in selDocs ){
                	try{
                    	dojo.byId( e ).checked = selDocs[e];
                 	}catch(e){}
              	}
         	}
		]]>
	</xp:this.value>
</xp:scriptBlock>

Im onShow und onHide-Event wird der Array für die gemerkten DocIds sicherheitshalber jedesmal gelöscht.

P.S.
Das mit den selectedIds wird nicht funktionieren. Hier müssen die Daten noch zum Server gepusht werden.

Offline buzzy666

  • Aktives Mitglied
  • ***
  • Beiträge: 177
  • Ich liebe dieses Forum!
Re: expandAll löscht Selektion
« Antwort #10 am: 10.10.12 - 12:27:03 »
Hi,

jo scheint zu klappen, spitze :-)

Und das mit den selectedIDs klappt durchaus (Du meinst den Code auf dem OK-Button, oder?)
Hab zwar schon mal gelesen, dass das nicht klappen soll, aber ich hab's halt einfach mal ausprobiert ;-)

Grüße & nochmals vielen Dank!

Buzzy

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz