У меня действительно странная проблема с ItemRenderer. У меня есть контейнер main.mxml с ViewStack. Когда пользователь входит в систему, начальное представление содержит AdvancedDataGrid, содержащий некоторые данные, и ItemRenderer ниже, который просто отображает кнопку «Удалить». Когда пользователь входит в систему, этот AdvancedDataGrid автоматически обновляется из базы данных. Кнопка «Удалить» должна быть включена или отключена в зависимости от роли пользователя.
Сценарий 1 (вход в систему как администратор):
- Пользователь с правами администратора входит в систему - сразу отображается представление таблицы данных, и кнопка «Удалить» правильно включена для каждой строки
- Выйти
- Войдите в систему как пользователь без прав администратора - данные обновляются, и все строки по-прежнему активны, кроме одной. Это могут быть первые, вторые или третьи ряды - это совершенно случайно. Это действительно странно. . .
Я перезапускаю браузер и следую сценарию 2. . .
Сценарий 2 (вход в систему как не администратор):
- Пользователь, не являющийся администратором, входит в систему - сразу отображается представление таблицы данных, а кнопка «Удалить» правильно отключена для каждой строки
- Выйти
- Войдите в систему как администратор. Все строки по-прежнему отключены кроме одной. Это могут быть первые, вторые или третьи ряды - это совершенно случайно. Как раз обратное первому сценарию.
ИНТЕРЕСНЫЙ ФАКТ. Если я помещаю точку останова в checkDeleteSecurity, она достигает ее ТОЛЬКО КОГДА ПЕРВЫЙ ПОЛЬЗОВАТЕЛЬ входит в систему и ПЕРВЫЙ ОБНОВЛЯЕТСЯ ДАТАГРИД. Когда я выхожу из системы и следующий пользователь входит в систему, сетка данных обновляется, но точка останова checkDeleteSecurity никогда не обнаруживается.
[Bindable]
private function checkDeleteSecurity ():Boolean
{
return (SecurityProxy.CheckSecurity(SecurityProxy.UserName));
}
<mx:LinkButton label="Delete" click="onDeleteClick()" id="lbDelete" enabled="{checkDeleteSecurity()}"/>