Привязать видимость кнопки к выражению (C #) - PullRequest
2 голосов
/ 20 мая 2010

У меня есть кнопка удаления в каждой строке GridView (компонент ASP.NET). Я хочу, чтобы некоторые кнопки удаления были невидимыми. Видимость кнопки удаления должна зависеть от данных, которые находятся за строкой.

GridView поддерживается EntityDataSource. GridView отображает объекты с именем Category, по одному экземпляру в каждой строке. Сущность Category имеет (помимо других) также поле типа EntityCollection. Имя этого поля Items. По сути, я хочу разрешить пользователю удалять строку только в том случае, если поле Items резервной копии сущности Category является пустой коллекцией.

Я не могу связать свойство Visible. У меня нет опыта работы с привязками и гугл реально не помогает. Вот как сейчас выглядит кнопка:

<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" 
                    Text="Delete" 
                    Visible=??? ></asp:Button>

Я не знаю, что должно заменить ???. Кнопка должна быть видимой только в том случае, если это выражение имеет значение true:

((SimpleEShop.Model.Category) dataItem).Items.LongCount() <= 0

где dataItem переменная содержит данные текущей строки в таблице. Какое связывание мне нужно?

Ответы [ 3 ]

3 голосов
/ 20 мая 2010

egrunin пропустил некоторые вещи, попробуйте вот так

Visible='<%# !(((System.Data.Objects.DataClasses.EntityCollection<YourItemType>)Eval("Items")).Count <= 0 )%>'
3 голосов
/ 20 мая 2010

Обычно я бы помещал это в обработчик DataBound, но как насчет чего-то вроде этого:

Visible="<%# Eval("Items.LongCount") <= 0 ? "false" : "true";%>"

Кавычки внутри кавычек могут вызвать ошибки, и это одна из причин, по которой я бы поместил их в обработчик ItemDataBound.

2 голосов
/ 20 мая 2010

Добавляя к синтаксису egrunin, я бы просто использовал

Visible='<%# Eval("Items.Count") <= 0 %>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...