解决方法
首先,将ButtonField或CommandField转换为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方法。