Я хотел бы обновить Repeat Control, инициированный клиентской стороной Javascript. Чтобы сделать это интересным, мой источник данных - это запрос JDBC, поэтому я не просто сделал частичное обновление. Я видел страницы об использовании запроса XHR для этого, но я не вижу, как обновлять данные JDBC для захвата новой информации. Я могу обновить элемент управления повторением со старыми данными, а не с новым.XPages - обновить данные JDBC с клиентской стороны
Я видел Repeat control refresh error , в котором говорится о возможном требовании тайм-аута, потому что время выполнения не известно о новых данных. Я запустил XHR после того, как вручную изменил что-то в БД и подождал минуту, все еще имел устаревшую информацию.
Могу ли я обновить переменную (jdbcPendingSummary) в вызове RPC, если не могу я перезвонить на сервер, чтобы вызвать обновление внутри функции CSJS?
<xp:this.data>
<xe:jdbcQuery connectionName="testDB"
sqlQuery="EXEC ptoGetPendingRequests #{sessionScope.userID}"
var="jdbcPendingSummary" />
</xp:this.data>
<xe:jsonRpcService id="ptoRPC" serviceName="ptoRPC">
<xe:this.methods>
<xe:remoteMethod name="createNewRequest">
<xe:this.script><![CDATA[
javaBeanObject.ptoCreateRequest(#{sessionScope.userID}, startDate, endDate, comment, d1,....,d15);
// Can I update the datasource var here?
]]></xe:this.script>
<xe:this.arguments>
<xe:remoteMethodArg name="startDate" type="string"></xe:remoteMethodArg>
..........
<xe:remoteMethodArg name="d15" type="number"></xe:remoteMethodArg>
</xe:this.arguments>
</xe:remoteMethod>
</xe:this.methods>
</xe:jsonRpcService>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
function createNewRequest(startDateID, endDateID, commentID, hiddenDivID, requestID) {
ptoRPC.createNewRequest(dojo.byId(startDateID).value, dojo.byId(endDateID).value, ........).addCallback(function(response) {
// ????? Refreshes the Repeat Control, but has the stale data.
setTimeout(
function() {
XSP.partialRefreshGet(requestID, {onComplete: function(responseData) { } })
// Or how about updating the datasource var here?
}, 8000);
});
}
]]></xp:this.value>
</xp:scriptBlock>
Я изменил свой пример, он работает в вытащить свежие данные - я не мог заставить КНР работать вместе с обновленным обновлением данных. Таким образом, получается пара дополнительных k данных , но это не ужасно. Не знаете, что произошло, но 2 пробела в конце строки не дают мне строки. ' <хр: this.script> <хр: executeClientScript сценарий =" cancelPTORequestv2 (# {summaryRow.id}); "> хр: executeClientScript> хр: этот .script> xp: eventHandler> ' –
anotherBob
Не уверен, что я понимаю здесь о проблеме очереди. Это на этом сайте или внутри Designer? – andrejusc
Я комментировал, что не могу отформатировать код, который я вставлял в свой комментарий (так что переполнение стека, а не дизайнер). Согласно странице справки, предполагается, что она перевернет строку, если вы сделаете 2 пробела. – anotherBob