我在自定义控件中有<xp:viewColumn>
用于文档锁定目的;我需要将视图面板中的行数据var作为自定义属性传递给我的自定义控件。
我在自定义控件上定义了一个新属性:
名称:rowEntry
输入:com.ibm.xsp.model.ViewRowData
这是我的视图面板中ccColDocLocking
的示例;如果我在所有View Panel上使用相同的var,它工作正常,但是,我不想对它进行硬编码。
<xp:viewPanel rows="15" id="viewPanel1" viewStyle="width:100%"
rowClasses="even,odd" var="rowData">
<xp:this.data>
<xp:dominoView viewName="IntakeForms" var="view1"></xp:dominoView>
</xp:this.data>
<xc:ccColDocLocking rowEntry="#{javascript:rowData}"></xc:ccColDocLocking>
<xp:viewColumn columnName="reqDate" id="viewColumn1"
displayAs="link" openDocAsReadonly="true">
<xp:this.converter>
<xp:convertDateTime pattern="MM/dd/yyyy"></xp:convertDateTime>
</xp:this.converter>
<xp:viewColumnHeader value="Request Date"
id="viewColumnHeader1" sortable="true">
</xp:viewColumnHeader>
</xp:viewColumn>
</xp:view>
这来自我的自定义控件:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:viewColumn id="viewColDocLock">
<xp:this.facets>
<xp:viewColumnHeader xp:key="header" id="viewColumnHeader5">
</xp:viewColumnHeader>
</xp:this.facets>
<xp:this.value><![CDATA[#{javascript:""}]]></xp:this.value>
<xp:image id="imgDocLock">
<xp:this.url><![CDATA[#{javascript:if (rowData.getDocument().hasItem("$Writers") != "") {
return "/locked.gif";
}}]]></xp:this.url>
<xp:this.alt><![CDATA[#{javascript:"Document locked by " + @Name('[Abbreviate]', rowData.getDocument().getItemValueString("$Writers"))}]]></xp:this.alt>
<xp:this.title><![CDATA[#{javascript:"Document locked by " + @Name('[Abbreviate]', rowData.getDocument().getItemValueString("$Writers"))}]]></xp:this.title>
</xp:image>
</xp:viewColumn>
</xp:view>
错误我得到的是:[ReferenceError]&#39; compositeData&#39;找不到
当我尝试将rowData.getDocument()
替换为compositeData.rowEntry.getDocument()
答案 0 :(得分:4)
如果您将数据源作为compositeData传递给repeat,则需要在页面加载时可用。默认情况下不会发生这种情况,默认情况下,重复的框架是在页面加载时创建的,但是在运行时计算的是特定于数据的内容。证明这一点是你不能在重复的绑定中使用$ {datasourceName.fieldName},只有#{datasourceName.fieldName}
要做你想做的事,你需要在重复上设置repeatControls =“true”。这告诉它“在页面加载时使用此集合中的x行创建重复内容”。然后你可以传递数据源。
但是,因为行和数据是在页面加载时写入的,所以部分刷新不会更改内容。你不能使用寻呼机或类似的东西。您只能在页面加载时重复写入的数据。
如果这对您不起作用,则需要将字符串引用传递给自定义控件(如UNID),并在自定义控件中添加一个检索相关数据源的数据源。
答案 1 :(得分:2)
我在Lotus Notes和Domino应用程序开发维基中找到了这个 这可能会对你有所帮助:
在自定义控件中:
<xp:this.beforePageLoad> <![CDATA[#{javascript:this.setAutoRemove(false);}]]> </xp:this.beforePageLoad>
来源/更多解释: http://www-10.lotus.com/ldd/ddwiki.nsf/dx/XPages_compositeData_not_found
答案 2 :(得分:0)
] 2
为&#39; com.ibm.xsp.model.ViewRowData&#39;使用var Picker Editor自定义控件内的自定义属性类型。在视图面板中设置自定义属性值。请看屏幕截图fyr。