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

Dea*_*ean 2 vb.net asp.net entity-framework

我有一个使用Entity Framework的.NET4 Web应用程序

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

<asp:CommandField ShowDeleteButton="True" ShowEditButton="True"  /> 
Run Code Online (Sandbox Code Playgroud)

并且定义了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>
Run Code Online (Sandbox Code Playgroud)

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

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

GridView命令字段没有OnClientClick来放置一个小的JavaScript代码段.

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

pat*_*ech 8

使用TemplateField,然后在其中放入一个Button CommandName="Delete".然后,您可以使用该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>
Run Code Online (Sandbox Code Playgroud)

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