我正在尝试创建一个“无限形式”,用户可以直接在表单中编辑RDBMS表的列值(即不打开允许编辑单行的单独“编辑表单”) 。我正在使用绑定到jdbcRowSet的XPages重复控件,该控件访问Oracle 10 DB中的简单PERSON表(标识号主键,名/姓,以及表单中未公开的一些其他列)。
显示数据并对其进行编辑按预期工作,但将更改持久保存到数据库会持续失败,但没有错误消息。在下面的源代码中,我可以看到我试图告诉数据源保存所做更改的方法,但无济于事。 (使用与Notes数据源相同的代码按预期工作并保持更改)。
如何让jdbcRowSet在表单中保留更改?
提前感谢您的帮助, 马丁
<xp:view xmlns:xp=“http://www.ibm.com/xsp/core”
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.data>
<!-- <xp:dominoView var="view1Ld" viewName="AuthorView"></xp:dominoView> -->
<xe:jdbcRowSet var="view1" connectionName="oracle10"
sqlTable="PERSON">
</xe:jdbcRowSet>
<xe:jdbcQuery var="jdbcQuery1"></xe:jdbcQuery>
</xp:this.data>
<xp:panel id="panel0">
<xp:repeat id="repeat1" rows="30" value="#{view1}" var="rpt">
<xp:panel id="panelDocData">
<xp:inputText id="inputText1" value="#{rpt.id}"></xp:inputText>
<xp:inputText id="inputText2"
value="#{rpt.first_name}">
</xp:inputText>
<xp:inputText id="inputText3" value="#{rpt.last_name}"
showReadonlyAsDisabled="true">
</xp:inputText>
<xp:inputText id="inputText5"
defaultValue="#{rpt.last_name}">
</xp:inputText>
</xp:panel>
</xp:repeat>
<xp:br></xp:br>
<xp:inputText id="inputText4" value="#{view1.last_name}"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Save" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:view1.acceptChanges()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button value="Simply Save" id="button3">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete" immediate="false" save="true">
<xp:this.action>
<xp:save></xp:save>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button value="Submit" id="button4">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete" immediate="false" save="true">
<xp:this.action>
<xp:confirm
message="Are you sure you want to persist the changes in the database ?">
</xp:confirm>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button value="Save Document" id="button5">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action>
<xp:saveDocument var="view1"></xp:saveDocument>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button id="button6">
<xp:this.value><![CDATA[Save Datasource]]></xp:this.value>
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:rpt.acceptChanges()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button value="Save View DS" id="button7">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:view1.acceptChanges()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button value="Save View DS 2" id="button8">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:view1.rpt.acceptChanges()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:panel>
<xp:br></xp:br>