Domino 9 und frühere Versionen > ND8: Entwicklung - XPages

Starting with XPages

<< < (4/7) > >>

Sven Hasselbach:

--- Zitat ---Das heißt ich muss zu Beginn die Verbindung zu meiner Notes-DB aufbauen, die Views ansprechen, durchgehen und einzelne Werte in Variablen speichern
--- Ende Zitat ---
Warum glaubst Du, dass Du das musst?


--- Zitat ---Mache ich das auf Client- oder Server-Seite?
--- Ende Zitat ---
Du willst im Client einen Button anklicken, der Daten vom Server abholt, und im Client darstellt. Ergo auf beiden Seiten.


--- Zitat ---Also so in etwa habe ich mir das vorgestellt für den ersten Schritt:
--- Ende Zitat ---
Du meinst so etwas (Um das vorherige Beispiel wieder auzugreifen)? Nutzt eine Datasource. Auf der XPage kann es beliebig viele davon geben.

--- Code: ---<xp:text escape="true" id="computedField1" value="#{javascript:rowEntry.getColumnValues().get(0)}" />

--- Ende Code ---


--- Zitat ---Allerdings bin ich mir nicht sicher, ob das bei mehreren Computed Fields so effizient ist.
--- Ende Zitat ---
Ist extrem ineffizient.


--- Zitat ---Ich glaube ich habe gefunden, was ich gesucht habe. Zumindest kommt es dem sehr nahe.
--- Ende Zitat ---
Dein SSJS Code wird immer ausgeführt, und es hat nichts mit dem OnClick-Event im Client zu tun. Schau Dir mal den generierten HTML-Code im Browser an. Dein Code wird nur im Client ausgeführt, die Daten stehen dem Client zur Verfügung. Da wird nix vom Server geladen; Dein Vorhaben, "andere" Daten aus anderen Views zu laden, funktioniert so nicht.

yannick:

--- Zitat von: Sven Hasselbach am 03.05.14 - 10:42:53 ---Du meinst so etwas (Um das vorherige Beispiel wieder auzugreifen)? Nutzt eine Datasource. Auf der XPage kann es beliebig viele davon geben.

--- Code: ---<xp:text escape="true" id="computedField1" value="#{javascript:rowEntry.getColumnValues().get(0)}" />

--- Ende Code ---

--- Ende Zitat ---
Genau, so etwas meine ich.


--- Zitat von: Sven Hasselbach am 03.05.14 - 10:42:53 ---Dein SSJS Code wird immer ausgeführt, und es hat nichts mit dem OnClick-Event im Client zu tun. Schau Dir mal den generierten HTML-Code im Browser an. Dein Code wird nur im Client ausgeführt, die Daten stehen dem Client zur Verfügung. Da wird nix vom Server geladen; Dein Vorhaben, "andere" Daten aus anderen Views zu laden, funktioniert so nicht.

--- Ende Zitat ---
Ich würde mich sehr freuen, wenn Du dazu erklären würdest wie mein Vorhaben denn funktionieren würde.

So sieht das ganze mittlerweile bei mir aus (nach diesem Beispiel):

--- Code: --- $("#button").click(function(e) {
request = $.ajax({
url: "http://meinserver.com/meindirectory/meinedatenbank.nsf/ajaxHandler?OpenAgent",
cache: false,
dataType: "html"
});
request.done(function(data) {
$("#text").html(data);
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
});

--- Ende Code ---

Der Agent sieht erstmal nur wiefolgt aus:

--- Code: ---Sub Initialize
Dim result As String
result = "Hello World!"
Print result
End Sub

--- Ende Code ---
Allerdings erhalte ich auch hier immer eine Fehlermeldung. Aber vielleicht kann man darauf aufbauen?

dnotes:
hier mal ein Beispiel - Variablen sind anzupassen -


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

<xp:dominoView var="view1" viewName="Alle Vorgänge"></xp:dominoView>
<xp:dominoDocument var="document1" formName="test"></xp:dominoDocument>
</xp:this.data>
<xp:button value="Spalte 1 holen" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="viewPanel">
<xp:this.action><![CDATA[#{javascript:viewScope.SpaltenTitel = "Kennzeichen"}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
&#160;&#160;&#160;&#160;&#160;
<xp:button value="Spalte 2 holen" id="button2">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="viewPanel">
<xp:this.action><![CDATA[#{javascript:viewScope.SpaltenTitel = "erstellt"}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:panel id="viewPanel">
<xp:repeat id="repeat1" rows="30" var="rowData" indexVar="repeatList"
value="#{view1}">
<xp:table>
<xp:tr>
<xp:td>
<xp:label id="label1">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue(viewScope.SpaltenTitel);
}]]></xp:this.value>
</xp:label>
</xp:td>
<xp:td></xp:td>
</xp:tr>
<xp:tr>
<xp:td></xp:td>
<xp:td></xp:td>
</xp:tr>
</xp:table>

</xp:repeat>
</xp:panel>
</xp:view>


--- Ende Code ---

yannick:
Vielen Dank für die Antwort. Bitte korrigiere mich, wenn ich falsch liege. Aber so wie ich das sehe ist das wieder eine gesamte Viewpanel, die aktualisiert wird. Ich möchte ja nur einzelne Datenpunkte aus der Datenbank holen und keine View anzeigen...

Ich habe das ganze nochmal mit Dojo probiert (nach diesem Beispiel), wieder nur error...

--- Code: --- dojo.xhrGet({
   url: "http://meinserver.com/directory/database.nsf/ajaxHandler?OpenAgent",
   load: function(result) {
       alert("The message is: " + result);
   },
   error: function() {
       alert("error");
   }
});

--- Ende Code ---

So langsam vergeht mir die Lust an XPages. Eigentlich wollte ich mich nochmal reinarbeiten, aber im Vergleich zur "herkömmlichen" Entwicklung mit HTML, Javascript, PHP etc. ist das einfach nur ein Graus. Oder ich bin einfach zu blöd dafür.

dnotes:
Das Panel heisst nur viewPanel ;-), also keine embedded view in der X-Page.
Wie der geübte Leser erkennen kann wird in dem Panel jeweils nur der Inhalt einer vorher gewählten Spalte angezeigt.
Was Du mir allerdings erklären könntest - was sind einzelne "Datenpunkte"?
Meinst Du damit bestimmte Feldinhalte aus den Dokumenten??

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln