我有一个自定义搜索,用户在其中输入序列号,然后从Notes数据库中返回与重复控件中的该S / N有关的文档。允许他们根据不同的S / N进行另一次搜索,但是,如果用户从良好的S / N获得结果后输入了错误的序列号,则onClick代码会出错,并且重复控件会从良好的S / N中显示文档。 N.当用户开始新的搜索时,是否可以擦除重复控件中的条目。
XPage上有两个按钮。第一个命名为“搜索”,当单击它时,将进行一些解析(这将导致错误的S / N错误),并激活Java bean搜索代码以返回结果。然后隐藏“搜索”按钮,并显示另一个名为“新搜索”的按钮,单击该按钮会删除用户为第一次搜索输入的数据,并允许他们输入新的S / N。
我已经搜索了这个论坛和其他论坛,但没有找到答案。我已经将重复控件属性RemoveRepeat设置为true,并且还将repeatControls设置为false。
搜索按钮的代码
importPackage(com.ourComp)
dBar.warn("pssrl1 = " + getComponent("pssrl1").getValue().toUpperCase());
if(getComponent("pssrl1").getValue().toUpperCase()!=""){
try{
var serialNbr = getComponent("pssrl1").getValue().toUpperCase();
varr mhpItem = getDataBean.getModelNbrData(serialNbr.toUpperCase(),"americas", sessionScope.SNtable);
sessionScope.serialNbr = serialNbr;
//it errors out below on bad S/N
var sg= utilBean.getLeftDataInfo(searchMHP);
var newSearchMHP = utilBean.getRightDataInfo(searchMHP);
var funct = utilBean.getLeftDataInfo(newSearchMHP);
var len = sg.length-1
var size = sg.slice(0,len)
var gen = sg.substr(len,1);
//based on funct > lookup productFamily in another DB
var otherDBname = configBean.getValue("otherDbPath")
var otherDB:NotesDatabase = session.getDatabase(session.getServerName(), otherDBname);
var vwWOther:NotesView = otherDB.getView("ProdFamLU");
//now that we have connection to other get document based funct
var docFunct:NotesDocument = vwOther.getDocumentByKey(funct);
var productFamily=docFunct.getItemValueString("Family");
returnMapSearch = searchLiteratureBean.processSearch5(mhpItem,funct,size,gen,sessionScope.LanguageP,productFamily);
} catch(e){
dBar.error("Error in Search button: " + e.toString());
sessionScope.showResults = false
println("ccDataEntry---username " + session.getEffectiveUserName() + "--> Error in Search button: " + e.toString());
}
}
println("++++++++++++++++++++++++++++");
“新搜索”按钮的代码
sessionScope.serialNbr="";
sessionScope.mhpItem="";
getComponent("pssrl1").setValue("");
如何清除重复控件上的现有结果?
重复代码
<xp:panel id="panelSearchResults1" styleClass="row">
<xp:this.rendered><![CDATA[#{javascript:sessionScope.showResults != false}]]></xp:this.rendered>
<xp:repeat id="repeat1"
rows="${searchLiteratureBean.maxResultsPerPage}"
value="#{javascript:if(showWidget==true) {return searchLiteratureBean.getSearchResults();}}"
var="col" indexVar="ind">
<tr>
<td>
<xp:image
url="#{col.iconURL}" id="image2" alt="#{col.mediaType}"
style="padding-top:3px;">
</xp:image>
<xe:tooltip
id="tooltip1" for="image1" label="#{col.mediaType}">
</xe:tooltip>
</td>
<td>
<xp:link escape="true" text="#{col.subject}" id="link2" value="#{col.url}">
<xp:this.target><![CDATA[#{javascript:return (col.isHomeDoc()? "" : "_blank");}]]></xp:this.target>
</xp:link>
</td>
<td>
<xp:text escape="true" id="computedField6" value="#{col.productFamily}"> </xp:text>
</td>
<td>
<xp:text escape="true" id="computedField2" value="#{col.language}"> </xp:text>
</td>
<td>
<xp:text escape="true" id="computedField3" value="#{col.lastModified}">
<xp:this.converter>
<xp:convertDateTime type="date"> </xp:convertDateTime>
</xp:this.converter>
</xp:text>
</td>
</tr>
</xp:repeat>
</xp:panel>
答案 0 :(得分:0)
您应该进行一些改进/
pssrl1
绑定到范围变量。您无需读/写作用域变量,而无需执行控件。也可以是托管bean searchLiteratureBean
。如果该集合不返回成员,则不会重复。 最有效的方法是将get / setSearchString方法添加到searchLiteratureBean。将您的搜索字段绑定到该字段。有search()和clear()方法,最后还有一个isSearched()属性,可用于视图/隐藏。
由于已安装了Bean,因此标记应仅包含数据绑定。有道理吗?