#sapui5
#sapui5
Вопрос:
Можно ли использовать привязку выражения в привязке типа агрегации. У меня есть таблица, и каждая строка в таблице имеет столбец с элементом управления sap.m.Select. Я хочу привязать элемент управления select в каждой строке к различным элементам на основе свойства строки.
Ниже приведен мой примерный пример:
<Table headerText="Dimensions/Measures" mode="MultiSelect" includeItemInSelection="true" items="{path: 'dataModel>/Fields'}">
<columns>
<Column hAlign="Center" vAlign="Center" visible="true">
<header>
<Label text="Dimensions/Measures" />
</header>
</Column>
<Column hAlign="Center" vAlign="Center" visible="true">
<header>
<Label text="Type" />
</header>
</Column>
<Column hAlign="Center" vAlign="Center" visible="true">
<header>
<Label text="Role" />
</header>
</Column>
</columns>
<ColumnListItem>
<Text text="{dataModel>Fieldname}" />
<Text text="{= ${dataModel>Aggr_Oper} !== null ? 'Measure' : 'Dimension'}" />
<Select items="{= ${path: 'dataModel>Aggr_Oper'} !== null ? ${dataModel>/chartConfigData/dimData}: ${dataModel>/chartConfigData/measData}}">
<core:Item key="{dataModel>key}" text="{dataModel>text}" />
</Select>
</ColumnListItem>
</Table>
Моя модель данных выглядит следующим образом:
{
"Fields":[
{
"AppID":"RP_PROP",
"AppVariantID":"PropListVariantDemo",
"Fieldname":"PropertyID",
"FieldDescription":"PropertyID",
"Aggr_Oper":null,
"Filterable":null,
"Visible":"true",
"Filter_Val":null,
"DisplayOrder":1,
"FieldGroup":null,
"SubTotal":null,
"FieldType":null,
"Sortable":"true",
"Sort_Op":"ASC",
"Sort_Order":1,
"ChartRole":null,
"BusinessEntity":"BRS"
},
{
"AppID":"RP_PROP",
"AppVariantID":"PropListVariantDemo",
"Fieldname":"Description",
"FieldDescription":"Description",
"Aggr_Oper":null,
"Filterable":null,
"Visible":"true",
"Filter_Val":null,
"DisplayOrder":2,
"FieldGroup":null,
"SubTotal":null,
"FieldType":null,
"Sortable":"true",
"Sort_Op":null,
"Sort_Order":null,
"ChartRole":null,
"BusinessEntity":"BRS"
},
{
"AppID":"RP_PROP",
"AppVariantID":"PropListVariantDemo",
"Fieldname":"PropertyTypeID",
"FieldDescription":"PropertyTypeID",
"Aggr_Oper":null,
"Filterable":null,
"Visible":"true",
"Filter_Val":null,
"DisplayOrder":3,
"FieldGroup":null,
"SubTotal":null,
"FieldType":null,
"Sortable":"true",
"Sort_Op":null,
"Sort_Order":null,
"ChartRole":null,
"BusinessEntity":"BRS"
},
{
"AppID":"RP_PROP",
"AppVariantID":"PropListVariantDemo",
"Fieldname":"PropertyType",
"FieldDescription":"PropertyType",
"Aggr_Oper":null,
"Filterable":null,
"Visible":"true",
"Filter_Val":null,
"DisplayOrder":4,
"FieldGroup":null,
"SubTotal":null,
"FieldType":null,
"Sortable":null,
"Sort_Op":null,
"Sort_Order":null,
"ChartRole":null,
"BusinessEntity":"BRS"
},
{
"AppID":"RP_PROP",
"AppVariantID":"PropListVariantDemo",
"Fieldname":"RegionID",
"FieldDescription":"RegionID",
"Aggr_Oper":null,
"Filterable":null,
"Visible":"true",
"Filter_Val":null,
"DisplayOrder":5,
"FieldGroup":null,
"SubTotal":null,
"FieldType":null,
"Sortable":null,
"Sort_Op":null,
"Sort_Order":null,
"ChartRole":null,
"BusinessEntity":"BRS"
},
{
"AppID":"RP_PROP",
"AppVariantID":"PropListVariantDemo",
"Fieldname":"RegionDescription",
"FieldDescription":"RegionDescription",
"Aggr_Oper":null,
"Filterable":null,
"Visible":"true",
"Filter_Val":null,
"DisplayOrder":6,
"FieldGroup":null,
"SubTotal":null,
"FieldType":null,
"Sortable":null,
"Sort_Op":null,
"Sort_Order":null,
"ChartRole":null,
"BusinessEntity":"BRS"
}
],
"chartConfigData":{
"dimData":[
{
"key":"val1",
"text":"val1"
},
{
"key":"val2",
"text":"val2"
}
],
"measData":[
{
"key":"val3",
"text":"val3"
},
{
"key":"val4",
"text":"val4"
}
]
}
}
Ответ №1:
Нет, пути динамической привязки невозможны. Однако есть несколько возможных обходных путей:
- Вы можете обработать данные своей модели и добавить ссылку на соответствующий список выбранных элементов в каждую строку. Используйте относительный путь привязки к этой ссылке в привязке select fields.
- Вы можете использовать фабричную функцию для создания строк вашей таблицы. Вы можете поместить свой шаблон строки как зависимый от вашей таблицы и клонировать его, а также настроить привязку selects для каждой строки в функции factory
- Вы можете добавить несколько выборок с разными привязками к своей таблице и скрыть все, кроме одной, в каждой строке, связав видимые свойства выборок.
Комментарии:
1. Спасибо шноделю. используется опция заводской функции сверху, поскольку количество строк ограничено.