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