我的数据库中有三个字段(docid
,docname
,docref
)。我能够成功地从字母a开始显示docname
。下一步是单击result中的任何值,它应显示该记录的其他字段。
例如,我得到alex
,adrain
,adams
作为结果,当我点击alex
时,它应显示其余字段(docid
,{{ 1}})来自数据库。
任何人都可以向我解释这个想法或样本或代码吗?我在下面提供了我的代码,下一步我需要代码或帮助,我会被困在这里。
适配器
docref
适配器调用(客户端)
var sel = WL.Server.createSQLStatement("SELECT docname FROM docdb WHERE docname like ? ");
function getdoc(docname) {
return WL.Server.invokeSQLStatement({
preparedStatement : sel,
parameters :[new String(doc + "%")]
});
}
搜索表单
function searchfunc(){
var invocationData = {
adapter : 'docdb',
procedure : 'getdoc',
parameters : [$('#docname').val()]
};
WL.Client.invokeProcedure(invocationData,{
onSuccess : loadSQLSuccess,
onFailure : loadSQLFailure
});
}
function loadSQLSuccess(result){
displayresults(result.invocationResult.resultSet);
}
function displayresults(result){
var ul = $('#table');
for (var i = 0; i < result.length; i++) {
var li = $('<li/>').html(result[i].DOCNAME);
li.append($('<hr>'));
ul.append(li);
}
}
答案 0 :(得分:1)
服务器/适配器端:
您应修改查询以返回docid
,例如将SQL语句更改为
var sel = WL.Server.createSQLStatement("SELECT docid,docname FROM docdb WHERE docname like ? ");
docname
可能是唯一的,也可能不是唯一的,这取决于您的数据库设置方式。其次,您应该有一个单独的查询来通过docid
检索文档详细信息,例如:
var getDetailsQuery = WL.Server.createSQLStatement("SELECT docid,docname,docref FROM docdb WHERE docid = ? ");
function getDocDetails(docid) {
return WL.Server.invokeSQLStatement({
preparedStatement : getDetailsQuery,
parameters :[docid]
});
}
确保将getDocDetails
过程添加到适配器xml文件
客户端:
更新您的displayresults
功能,如下所示:
function displayresults(result){
var ul = $('#table');
// clear the list
ul.html(null);
for (var i = 0; i < result.length; i++) {
var doc = result[i];
// store document details as part of the element, i.e.: data()
var li = $('<li/>').html(doc.docname).data(doc);
li.append($('<hr>'));
ul.append(li);
}
}
$(document).on('click', 'li', function(){
var data = $(this).data();
var invocationData = {
adapter : 'docdb',
procedure : 'getDocDetails',
parameters : [data.docid]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess : getDocDetailsSuccess,
onFailure : getDocDetailsFailure
});
});
function getDocDetailsSuccess(result) {
// do your things
}
function getDocDetailsFailure(error) {
// handle error
}