我有一个显示个人记录的GridView。我想根据基础记录的某些属性有条件地显示CommandFieldButtonField。这个想法是只允许对特定人员执行命令。

做这个的最好方式是什么?我更喜欢声明性解决方案而不是程序性解决方案。

最佳答案

首先,将ButtonFieldCommandField转换为TemplateField,然后将按钮的Visible属性绑定(bind)到实现业务逻辑的方法:

<asp:GridView runat="server" ID="GV1" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" />
        <asp:BoundField DataField="Age" HeaderText="Age" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button runat="server" Text="Reject"
                Visible='<%# IsOverAgeLimit((Decimal)Eval("Age")) %>'
                CommandName="Select"/>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

然后,在后面的代码中,添加方法:
protected Boolean IsOverAgeLimit(Decimal Age) {
    return Age > 35M;
}

这里的优点是您可以相当容易地测试IsOverAgeLimit方法。

关于asp.net - 有条件地在Gridview中隐藏CommandField或ButtonField,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1461302/

10-12 19:10