Domino 9 und frühere Versionen > ND8: Entwicklung - XPages
expandAll löscht Selektion
Sven Hasselbach:
Ja, daran liegt es. Poste bitte mal deinen SourceCode.
buzzy666:
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>
  
<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>
  
<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>
  
<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
Sven Hasselbach:
Ja bitte.
buzzy666:
--- Zitat von: Sven Hasselbach am 09.10.12 - 09:24:49 ---Ja bitte.
--- Ende Zitat ---
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>
  
<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>
  
<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>
  
<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>
  
<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>
  <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>
   
<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>
--- Ende Code ---
Sven Hasselbach:
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>
--- Ende Code ---
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.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln