Wir haben eine XPage, die eine benannte JDBC-Verbindung über die OpenNTF-Erweiterungsbibliothek verwendet.Zugriff auf Daten für JDBC-Abfrage in ViewPanel auf XPage über OpenNTF-Treiber
Dies ist erfolgreich Abrufen von Daten und platzieren Sie es in einem View Panel, Ich habe ausgewählt, um ein Kontrollkästchen neben dem ersten Feld in der Zeile anzuzeigen, und müssen auf den zurückgegebenen Wert für das Feld in dieser Zeile (oder a Array für Vielfache der ausgewählten Zeilen).
Insgesamt wurden bisher diese Methoden versucht:
var Docs2=getComponent("viewPanelDocs");
//var db2 = Docs2.getAttributes();
//var doc2Array=Docs2.getSelectedIds();
//var test = getComponent("something");
var p=Docs2.getParent()
var pp=something.getColumnValue("extName")
var Rows = Docs2.getChildCount().valueOf();
var doc2Array= new Array();
var SelectedDocs2 = new Array();
for(i=0; i < Rows; i++) {
// Works, no output: var Selected2Docs=Docs2.getAttributes();
// FAILS: var Selected2Docs=Docs2_xspGetRendererData();
// WORKS, no output: var Selected2Docs=Docs2._xspGetRendererData();
// WORKS, gets local ID of viewPanel: var Selected2Docs=Docs2.getId();
// Works: [email protected]: var Selected2Docs=Docs2.getAttributes();
// FAILS, doesn't like string: var Selected2Docs=Docs2.getAttributes("ExternalUNCLink");
// WOrks, no output: var Selected2Docs=Docs2.getAttributes().get("ExternalUNCLink");
// Fails, something, something: var Selected2Docs=Docs2.getAttributes().values("ExternalUNCLink");
var Selected2Docs=Docs2.toString().valueOf();
doc2Array.push(Selected2Docs);
}
getComponent("Docs2").value=Rows + ": " + @Implode(doc2Array, ",");
//viewScope.put("Documents", @Implode(docArray, ","));
Irgendwelche Hinweise, wie Sie den Rückgabewert von ExternalUNCLink zugreifen?
Vorbehalt: Ich bin kein Domino-Entwickler, also entschuldige mich, wenn einige der Terminologie nicht korrekt sind.
[EDIT]
Wir haben einen JDBC-Treiber, die in den Packages lebt -> Web Content -> WEB-INF -> jdbc Ordner mit einem Testnamen und vier Betrachtungsweisen in einem XML-Stil-Format, also:
<jdbc>
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<url>jdbc:jtds:sqlserver://malbec/aps_dsql</url>
<user>user</user>
<password>pass</password>
</jdbc>
Dann auf der Seite haben wir eine SQL-Abfrage in der afterPageLoad Ereignis:
var TmpSql="select * from TABLE"
viewScope.put("SQLQuery", TmpSql);
getComponent("strSQLQuery").value=TmpSql;
Danach werden Sie die viewScope Variable „sQLQuery“ in das Wertefeld auf einem JDB für sqlquery setzen CQuery-Ansicht, wobei die Variable connectionName des oben angezeigten Namens des JDBC-Treibers verwendet wird. Es gibt die Daten zurück, aber wir können nicht darauf zugreifen.
[/ EDIT]
[EDIT 2]
(Entschuldigung für die Hunde Frühstück ...)
<?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">
<xp:this.afterPageLoad><![CDATA[#{javascript:var TmpSql="select A.extName,A.extUNC,A.extObjInstID,LEFT(A.extUNC,5) as Category, B.cltMailName From cdblink A inner join cdbClientMaster B on A.extobjinstid=B.objInstID where extobjectid=1 and extobjinstid in (1536,1871,632)"
viewScope.put("strSQLQuery", TmpSql);
getComponent("strSQLQuery").value=TmpSql;
getComponent('viewPanelDocs').getData().refresh();
}]]></xp:this.afterPageLoad>
<xc:testjdbcrowdataaccess></xc:testjdbcrowdataaccess>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
// --var vp=getComponent("viewPanelDocs");
// --
// --//var test=vp._xspGetRendererData().getParent();
// --//var test=vp._xspGetStateId().valueOf();
// --//var test= vp.getChildren().lastIndexOf();
// --var test= vp.getChildren().size();
// --var test=vp.getChildCount();
// --var test=vp._xspGetStateId().valueOf();
// --//var test=vp._xspGetReadOnlyObj().hashCode();
// --//var test=vp.getAttributes().get();
// --var test=vp.getFamily().valueOf();
// --var test=vp.getParent();
// --
// --getComponent("Test").value=test.toString();
//var database=mssql_test.jdbc;
//
//var viewPanel=getComponent("viewPanelDocs");// get the componet of viewPanel
//var docIDArray=viewPanel.getSelectedIds(); //get the array of document ids
//for(i=0; i < docIDArray.length; i++){
// var docId=docIDArray[i];
// var doc=database.getDocumentByID(docId);
// .. your code to deal with the selected document
// getComponent("Test").value=doc.toString();
//}
var test = getComponent("viewPanelDocs").value;
@ErrorMessage("ID: "+test);}]]></xp:this.action>
</xp:eventHandler></xp:button>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br><xp:table id="DEBUG" style="width:100%">
<xp:tr>
<xp:td>inputText2</xp:td>
<xp:td>
<xp:inputText id="inputText2" value="#{viewScope.searchDOCID}" style="width:100%">
<xp:eventHandler event="onfocus" submit="true" refreshMode="complete" id="eventHandler2">
<xp:this.action>
<![CDATA[#{javascript:
var viewPanel:com.ibm.xsp.component.xp.XspViewPanel = getComponent('viewPanel2');
var dominoView:com.ibm.xsp.model.domino.DominoViewData = viewPanel.getData();
var filterValue = getComponent('inputText2').getValue();
if (filterValue == 'NA') {
filterValue = '';}
viewScope.clear()
dominoView.setKeys(filterValue);}]]>
</xp:this.action>
</xp:eventHandler>
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>inputText3 (displayvar)</xp:td>
<xp:td>
<xp:inputText id="inputText3" value="#{viewScope.documentDOCID}" style="width:100%">
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>Test</xp:td>
<xp:td>
<xp:inputText id="Test" style="width:100%" value="#{viewScope.test}">
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>inputText1</xp:td>
<xp:td>
<xp:inputText id="inputText1" style="width:100%"></xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>inputText4</xp:td>
<xp:td>
<xp:inputText id="inputText4" style="width:100%"></xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>SQLQuery</xp:td>
<xp:td>
<xp:inputText id="strSQLQuery" style="width:100%" defaultValue="strSQLQuery">
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>SQLQueryCat</xp:td>
<xp:td>
<xp:inputText id="strSQLQueryCat" style="width:100%">
</xp:inputText></xp:td>
</xp:tr>
<xp:tr>
<xp:td>Doc1</xp:td>
<xp:td>
<xp:inputText id="Docs" style="width:100%">
</xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td style="width:15%">Doc2</xp:td>
<xp:td>
<xp:inputText id="Docs2" style="width:100%"></xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>scopeVariable.Documents</xp:td>
<xp:td>
<xp:inputText id="svDocuments" style="width:100%"></xp:inputText>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>scopeVariable.Recipients</xp:td>
<xp:td>
<xp:inputText id="svRecipients" style="width:100%"></xp:inputText>
</xp:td>
</xp:tr>
</xp:table></xp:view>
[/ EDIT 2]
Ein viewPanel zeigt nur eine Notes Ansicht an. Ich frage mich, was Sie getan haben, um das ViewPanel zu zwingen, ein SQL-Ergebnis anzuzeigen. Haben Sie irgendwann eine Datentabelle verwendet? – stwissel
Sagte Sie weg von SQL zu bleiben – stwissel
Aktualisierte Frage zu zeigen, Methode zum Anzeigen von SQL-Daten in einer View-Tabelle ... – neophytte