Доступ к строке для стиля в обработчике шаблонов SAP UI5 с использованием JQuery
Я пытаюсь получить UI5 для изменения фона строки в зависимости от значения поля. Это работает после начальной загрузки и прокрутки, но не работает при начальной загрузке.
Это не работает, потому что, насколько я могу судить, ячейка не была добавлена в родительский контейнерthis.$().closest('tr')
ничего не возвращает При прокрутке ячейка была добавлена к ее родителю, а затем все просыпается просто отлично.
<!DOCTYPE html>
<html><head>
<meta http-equiv='X-UA-Compatible' content='IE=edge' />
<title>Bindign Rows</title>
<script id='sap-ui-bootstrap'
src='https://openui5.hana.ondemand.com/resources/sap-ui-core.js'
data-sap-ui-theme='sap_bluecrystal'
data-sap-ui-libs='sap.ui.commons,sap.ui.table'></script>
<script>
var data = [
{sex: 'm', fname: 'XXX' , lname : 'YYYYY'},
{sex: 'm', fname: 'XXX' , lname : 'YYYYY'},
{sex: 'f', fname: 'XXX', lname : 'YYYYY'},
{sex: 'f', fname: 'XXX', lname : 'YYYYY'} ,
{sex: 'm', fname: 'XXX', lname : 'YYYYY'},
{sex: 'f', fname: 'XXX', lname : 'YYYYY'}
];
var oTable = new sap.ui.table.Table({visibleRowCount: 3});
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({modelData: data});
oTable.setModel(oModel);
var template1 = new sap.ui.commons.TextField().bindProperty("value", "sex",
function(sex){
if(sex == "m" ){
// !! the below parent can't be found.
this.$().closest("tr").css("background-color", "red");
} else if(sex == "f" )
{
this.$().closest("tr").css("background-color", "inherit");
}
return sex ;
}
);
oTable.addColumn(new sap.ui.table.Column({ label: "Sex",
template: template1}));
oTable.placeAt('content');
oTable.bindRows("/modelData");
</script>
</head>
<body class='sapUiBody'>
<div id='content'></div>
</body>
</html>
Что вы увидите, так это то, что при начальной загрузке все ячейки серые.
Когда вы прокрутите все ячейки с сексом: M получит красный фон. Нам бы понравилось, если бы красный фон заполнял сразу после первой загрузки.
Вещи, которые мы попробовали:
Предоставление шаблона для звонка.bindRows('/data', template1)
Похоже, что тип шаблона для этого вызова другой, но вряд ли документирован на веб-сайте SAP.призваниеbindRows
дважды.ВРЕМЕННОЕ РЕШЕНИЕ: >>>делать стилизацию по таймеру, работает, но уродливо и недостаточно стабильный.Я не могу найтиonParentChanged
обработчик,onLoad
или аналогичное событие, которое срабатывает после привязки данных, и я не могу найти событие, похожее на thdonDataBinding
противonRowCreated
что я привык из моего .NET фона.Простое изменение стиля самого текстового поля работает, как и следовало ожидать.