Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SAP UI5-如何基于行状态禁用SAP.m.Table Multiselect表中的行_Javascript_Sapui5 - Fatal编程技术网

Javascript SAP UI5-如何基于行状态禁用SAP.m.Table Multiselect表中的行

Javascript SAP UI5-如何基于行状态禁用SAP.m.Table Multiselect表中的行,javascript,sapui5,Javascript,Sapui5,我有点棘手的问题。我想禁用行选择是sap.m.Table。但该表在面板内容中可用 上述逻辑的问题是,如果只有一个表,那么基于表id,我可以获取行数据,并且可以禁用行。但在这里,将动态生成多个表,因此我无法为该表提供ID 有人可以帮助我如何基于checkDuplicate布尔值禁用行吗 提前感谢将事件的事件侦听器添加到表中 通过调用setModel/setBindingContext或由于传播而更改此对象上的模型或上下文时激发 将事件的事件侦听器添加到表中 通过调用setModel/setBind

我有点棘手的问题。我想禁用行选择是sap.m.Table。但该表在面板内容中可用

上述逻辑的问题是,如果只有一个表,那么基于表id,我可以获取行数据,并且可以禁用行。但在这里,将动态生成多个表,因此我无法为该表提供ID

有人可以帮助我如何基于checkDuplicate布尔值禁用行吗


提前感谢

将事件的事件侦听器添加到表中

通过调用setModel/setBindingContext或由于传播而更改此对象上的模型或上下文时激发


将事件的事件侦听器添加到表中

通过调用setModel/setBindingContext或由于传播而更改此对象上的模型或上下文时激发


我认为有两种可能性:1。给您的表指定一个类似multiSelectTable的类,然后使用jQuery查找这些表。2.使用动态ID在控制器中创建表,以便跟踪。在这两种情况下,都需要遍历表数组。或者我刚才的第三个想法,可能是使用XML复合控件。但我不确定您试图解决的问题是否会变得复杂。@Mainz007谢谢您的回复。正如您所建议的,我已经给了Table类,通过它,我试图通过循环找到表的“id”。但是使用$'.skillsTablesClass.attr'id'语句。我无法获取该表的ID。你能帮助我如何继续这个逻辑吗?我同意旅行者的想法。听起来似乎是一个更好的解决方案。我看到两种可能性:1。给您的表指定一个类似multiSelectTable的类,然后使用jQuery查找这些表。2.使用动态ID在控制器中创建表,以便跟踪。在这两种情况下,都需要遍历表数组。或者我刚才的第三个想法,可能是使用XML复合控件。但我不确定您试图解决的问题是否会变得复杂。@Mainz007谢谢您的回复。正如您所建议的,我已经给了Table类,通过它,我试图通过循环找到表的“id”。但是使用$'.skillsTablesClass.attr'id'语句。我无法获取该表的ID。你能帮助我如何继续这个逻辑吗?我同意旅行者的想法。听起来对我来说是更好的解决办法
<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> 
var tbl = self.getView().byId('productsTable');
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);
    }
});
<Table id="productsTable" 
       modelContextChange=".onModelContextChange"
       items="{dataModel>productsList}"
       sticky="ColumnHeaders"
       mode="MultiSelect"
>
...
</Table>
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);
        }
    });
}