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

 

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(&quot;!canSaveAll()&quot;)"/>
    </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();
};

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值