将按钮可见性绑定到表达式(C#)

时间:2010-05-19 22:53:24

标签: c# asp.net data-binding gridview templates

我在GridView(组件ASP.NET)的每一行中都有一个删除按钮。我想要一些删除按钮是不可见的。删除按钮的可见性应取决于返回行的数据。

GridViewEntityDataSource支持。 GridView显示名为Category的实体,每行一个实例。实体Category(除了其他实体)还具有EntityCollection类型的字段。该字段的名称为Items。基本上我想只有在后备Items实体的Category字段是空集合时才允许用户删除行。

我无法弥补Visible属性的绑定。我没有绑定经验,谷歌也没有真正的帮助。 这就是按钮现在的样子:

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

我不知道应该替换???的内容。仅当此表达式的计算结果为true时,按钮schold才可见:

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

其中dataItem变量包含表中当前行的数据。 我需要什么样的约束力?

3 个答案:

答案 0 :(得分:3)

通常我会将它放在DataBound处理程序中,但是如下所示:

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

引号内的引号可能会导致错误,这是我将它放在ItemDataBound处理程序中的一个原因。

答案 1 :(得分:3)

egrunin错过了一些尝试这样的事情

Visible='<%# !(((System.Data.Objects.DataClasses.EntityCollection<YourItemType>)Eval("Items")).Count <= 0 )%>'

答案 2 :(得分:2)

添加egrunin的语法,我只想使用

Visible='<%# Eval("Items.Count") <= 0 %>'