您的位置:首页 > 其它

解决X5中一个保存按钮不能同时保存数据问题(多个数据集中其中某个数据集的store-type:simple 时,不能同时保存)

2011-07-26 12:38 986 查看
X5平台bug: 当有两个或多个数据集(以两个为例),主从两数据集的store-type不同时,主数据集的store-type为grid,从数据集的store-type为simple时,平台的保存按钮就不能同时保存主从两个数据集。

解决办法:将平台的(列表、详细)保存按钮替换成之定义trigger(按钮),然后创建一个常量数据集data1添加一个关系canSave(保存),将按钮的ref关联到常量数据集data1的canSave上,之后添加常量数据集canSave的规则,在它的readonly属性上去调用自定义的保存数据函数eval("!canSaveAll()")
<data component="/UI/system/components/data.xbl.xml#data" columns="canSave"
src="" auto-load="true" id="data1" style=";" store-type="simple">
<rows xmlns="">
<row id="xx"/>
</rows>
<rule id="dataRule1" column="canSave" readonly="eval("!canSaveAll()")"/>
</data>
<item id="customBarItem1">
<xforms:trigger id="trigger1" appearance="image" ref="data('data1')/canSave"
src="/UI/PMC/common/images/save.gif" dis-src="/UI/PMC/common/images/un_save.gif"
style="width:23px;">
<xforms:label id="xuiLabel3">保存</xforms:label>
<xforms:action id="action4" ev:event="DOMActivate">
<xforms:script id="xformsScript4">mainActivity.trigger1Click(event)</xforms:script>
</xforms:action>
</xforms:trigger>
</item>
<item id="customBarItem2">
<xforms:trigger id="trigger2" appearance="image" src="/UI/PMC/common/images/save.gif"
dis-src="/UI/PMC/common/images/un_save.gif" style="width:24px;height:22px;"
ref="data('data1')/canSave">
<xforms:label id="xuiLabel4">保存</xforms:label>
<xforms:action id="action3" ev:event="DOMActivate">
<xforms:script id="xformsScript3">mainActivity.trigger2Click(event)</xforms:script>
</xforms:action>
</xforms:trigger>
</item>





代码实现:
function canSaveAll() {
var dataMain = justep.xbl("dataMain");
var dataDetail = justep.xbl("dataDetail");
return (dataMain && dataMain.canSave())
|| (dataDetail && dataDetail.canSave());
}
function saveData() {
var saved = false;
var saveSlave = function() {
if (saved)
return;
saved = true;
var dataDetail = justep.xbl("dataDetail");
if (dataDetail)
dataDetail.saveData();
};
var dataMain = justep.xbl("dataMain");
if (dataMain)
dataMain.saveData(saveSlave);
saveSlave();
}
mainActivity.trigger2Click = function(event) {
saveData();
};
mainActivity.trigger1Click = function(event) {
saveData();
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐