ASP.NET如何使用EntityDataSource在gridview上添加删除确认

时间:2011-02-14 14:35:51

标签: asp.net vb.net entity-framework

我有一个使用实体框架的.NET4 Web应用程序

在我的一个页面中,我有一个绑定到实体数据源的gridview。在Gridview定义中我有

<asp:CommandField ShowDeleteButton="True" ShowEditButton="True"  /> 

并且定义了EntityDataSource

<asp:EntityDataSource ID="eds_timesheets" runat="server" ConnectionString="name=TIME_ENTRY_DB"
                DefaultContainerName="TIME_ENTRY_DB" EnableDelete="True" EnableFlattening="False"
                EnableUpdate="True" EntitySetName="TIMESHEETs" Include="USER, ACTIVITY, PROJECT"
                EntityTypeFilter="TIMESHEET">
            </asp:EntityDataSource>

一切都按预期工作,但我现在想要在意外按下的情况下确认删除。

我已经尝试将代码放在gridview的row命令上,该命令将注册一个javascript警报窗口,但此时似乎EntityDataSource已经执行了删除。

没有用于gridview命令字段的OnClientClick来放置一个小的javascript片段。

有没有人闯入并随后解决了这个问题?是否更容易拥有一个链接按钮并自己处理实体数据源的删除?

1 个答案:

答案 0 :(得分:8)

使用TemplateField,然后在其中放入一个带有CommandName="Delete"的Button。然后,您可以使用OnClientClick属性来调用您的javascript确认。

如下所示(可以使用Button,ImageButton或LinkBut​​ton):

<asp:TemplateField>
  <ItemTemplate>
    <asp:Button id="DeleteButton" runat="server" text="Delete"
      CommandName="Delete" OnClientClick="return confirm('Are you sure?');" ></asp:Button>
  </ItemTemplate>
</asp:TemplateField>

当然,您不希望在CommandField中显示删除按钮。