使用GridView,在数据绑顶时控制每行命令按钮的Enalbe状态

本文介绍如何在ASP.NET的GridView中实现条件性的行删除功能。通过在数据源SQLDataSource中利用自定义函数判断每行数据是否允许删除,并在GridView的模板列中设置按钮的启用状态以实现部分行可删除而部分行不可删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


情景:

用一个GridView显示的数据表,表中一些行可以删除,另外的行不能删除。

解决:

1 数据源: sqldatasource在获取数据时,计算数据是否可以删除。这里我使用的是一个sql的function。下面是我的selectcommand:

SELECT [ContactID], [LastName], [FirstName], [EnglishName], [WorkPhone], [MobilePhone], [Email], [Address], [City], [Province], dbo.CanDelContact([ContactID]) as CanDel  FROM [ContactInfo]

2 GridView中设置数据模板列的Enable属性:

                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:Button ID="ButtonDelete" runat="server" CommandName="Delete"  Text="Delete" Enabled='<%# System.Convert.ToInt32(Eval("CanDel")) > 0 %>' />
                                </ItemTemplate>
                            </asp:TemplateField>

<%# System.Convert.ToInt32(Eval("CanDel")) > 0 %> 是在数据绑定时自动计算的。<%#表示使用数据绑顶。你可以在<%%>中间使用C#的语句进行计算。

要注意的是:GridView的asp:CommandField是不支持数据绑定的,我试过

<asp:CommandField ShowDeleteButton=<%# System.Convert.ToInt32(Eval("CanDel")) > 0 %>  ButtonType =Button  />

系统便以出错,因为CommandField不支持数据绑定。

所以只好增加一个模板列来解决这个问题。只要设置CommandName="Delete" ,就可以了。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值