亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SAP UI5 - 如何根據行狀態禁用 sap.m.Table 多選表中的一行

SAP UI5 - 如何根據行狀態禁用 sap.m.Table 多選表中的一行

開心每一天1111 2022-01-13 11:03:30
我有一個棘手的問題。我想禁用行選擇是sap.m.Table. 但表格在Panel內容中可用<VBox items="{dataModel>/Products}">   <Panel expandable="true" id="testPanel" expanded="false" width="auto" class="sapUiResponsiveMargin">      <headerToolbar>         <Toolbar style="Clear">            <Text text="{dataModel>productText}"></Text>         </Toolbar>      </headerToolbar>      <content>         <Table id="productsTable" items="{dataModel>productsList}" id="skillsTable" visible="true" sticky="ColumnHeaders"            mode="MultiSelect">            <columns>               <Column>                  <Text text="Product Name"/>               </Column>               <Column>                  <Text text="Product No"/>               </Column>               <Column>                  <Text text="Asset"/>               </Column>               <Column>                  <Text text="Check Duplicate"/>               </Column>            </columns>            <items>               <ColumnListItem >                  <cells>                     <Text text="{dataModel>productName}"/>                     <Text text="{dataModel>productNo}"/>                     <Text text="{dataModel>asset}"/>                     <Text text="{dataModel>checkDuplicate}"/>                  </cells>               </ColumnListItem>            </items>         </Table>      </content>   </Panel></VBox> 如果你看到上面的代碼,有 3 個點... 1)VBox 有一個 Products 數組 2)VBox 里面有 Panel 3)Inside Panel,在 Panel Content 中,我已經給出了sap.m.Table,這意味著可能有多個表將根據來自后端的數據生成?,F在我的要求是如何根據中的布爾值禁用一行checkDuplicate?下面是我的控制器邏輯,我正在嘗試...var tbl = self.getView().byId('productsTable');var header = tbl.$().find('thead');var selectAllCb = header.find('.sapMCb');selectAllCb.remove();});上述邏輯的問題是,如果只有一個 Table ,那么基于 Table id,我可以獲取行數據,我可以禁用該行。但是這里會動態生成多個表,所以我不能為表提供 ID。有人可以幫我如何根據checkDuplicate布爾值禁用該行嗎?先感謝您
查看完整描述

1 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

將事件modelContextChange的事件偵聽器添加到您的表中。


在此對象上更改模型或上下文時觸發(通過調用 setModel/setBindingContext 或由于傳播)


<Table id="productsTable" 

       modelContextChange=".onModelContextChange"

       items="{dataModel>productsList}"

       sticky="ColumnHeaders"

       mode="MultiSelect"

>

...

</Table>

該事件包含當前表的參數“id”。這樣,您可以通過其完整 id 檢索當前表,并通過微小的更改重新使用您的代碼。


onModelContextChange: function(oEvent) {

    var sId = oEvent.getParameter("id");

    var tbl = sap.ui.getCore().byId(sId);

    var header = tbl.$().find('thead');

    var selectAllCb = header.find('.sapMCb');

    selectAllCb.remove();


    tbl.getItems().forEach(function (r) {

        var obj = r.getBindingContext("dataModel").getObject();

        var oStatus = obj.checkDuplicate; 

        var cb = r.$().find('.sapMCb');

        var oCb = sap.ui.getCore().byId(cb.attr('id'));

        if (oStatus == "true") {

            oCb.setEnabled(true);

        } else {

            oCb.setEnabled(false);

        }

    });

}


查看完整回答
反對 回復 2022-01-13
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號