我有GridView个人在展示记录.我想根据底层记录的某些属性有条件地显示CommandFieldButtonField.其 idea 是只允许对特定的人执行命令.

最好的方法是什么?比起程序性的解决方案,我更喜欢声明性的解决方案.

推荐答案

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

<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相关问答推荐

调用context.Users和context.Set User有什么区别?

ASP.NET多行查询文本框中的多个名称并将结果添加到单个网格视图

更新剃须刀页面中图表的值

ASP .Net Web API 将图像下载为二进制

是否可以在没有那些 .svn 文件夹的情况下从 subversion 签出文件?

SqlBulkCopy 超时

在控制器 asp.net mvc 5 的视图上显示错误消息

如果站点在 localhost 或 127.0.0.1 上运行,如何判断 ASP.NET MVC 视图

GridView 与嵌套类的属性绑定

如何解决 Kerberos 双跳问题?

.Net Standard 2.0 类库是否有通用配置文件?

Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用

使用 JObject 所需的库名称是什么?

如何获取 ASP.NET 应用程序的完整虚拟路径

HttpContext.Current 在 MVC 4 项目中未解决

如何在 ASP.NET 中获取原始请求正文?

.NET AJAX 调用 ASMX 或 ASPX 或 ASHX?

ASP.NET MVC Url Route 支持(点)

ASP.NET MVC 路由的无限 URL 参数

如何在asp.net的GridView中按列名而不是按索引获取单元格值