如何在asp:GridView中获取删除确认

3

如何在 asp:GridView 中的删除按钮上弹出删除确认框?

3个回答

8

如果您在 GridView 中为每一行设置了一个删除按钮,那么我认为下面这种方式是最好的(也绝对是最简单的),可以弹出一个提示框询问确认。这里是完整的 aspx 代码(不需要编写代码后端):

<asp:TemplateField ShowHeader="False">
  <ItemTemplate>
  <asp:LinkButton ID="DeleteButton" runat="server"
      CausesValidation="False"
      CommandName="Delete"
      OnClientClick='<%# Eval("Title", "return confirm(\"Delete the datasource {0}?\");") %>'
      Text="delete" />
  </ItemTemplate>
</asp:TemplateField>

几个注意事项:

  1. CommandName必须是Delete - 这将映射到GridView删除功能。
  2. Title是该行标题的数据列名称。您在此处使用的内容取决于数据的列/属性名称。
  3. 与"datasource"一样,这就是我们拥有行的东西。您需要用您的数据替换它。
  4. 我认为<%$ resource_name %>应该适用于文本 - 但尚未完成。

0
如果你正在使用 GridView,那么你走错了方向。专业人士不会使用它,他们几乎只使用 ListView。所以不要费心去学它。大多数书籍并不教授工业最佳实践。

@David Thielen:如下所指出的,使用JavaScript来确认删除是不错的,但并不可靠,因为JS在客户端浏览器上且超出您的控制范围。出于安全考虑,客户端浏览器可能会禁用JavaScript,因此确认窗口将不会显示。最好的方法是将ListView放入MultiView中,并在ListView中捕获item-deleting事件并切换到MultiView中的另一个视图以确认删除。一旦按下某个自定义按钮,您就可以手动从数据库中删除记录。 - Aperture

0

你还可以在网格视图的RowDataBound事件中动态地为删除链接添加onclick属性。

在下面的代码中,我们有一个3列的表格,所以columnIndex = 2。此外,只有一个自动生成的按钮(删除按钮),所以autoButtonIndex = 0。如果我们有编辑按钮、保存按钮,这个索引会改变。

Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound

Dim columnIndex As Integer = 2
Dim autoButtonIndex as Integer = 0  

    Try
        If (e.Row.RowType = DataControlRowType.DataRow) Then

            If (e.Row.RowState = DataControlRowState.Normal Or e.Row.RowState = DataControlRowState.Alternate) Then

                Dim lnkBtn As LinkButton = CType(e.Row.Cells(columnIndex).Controls(autoButtonIndex), LinkButton)
                lnkBtn.Attributes.Add("onclick", "if(!confirm('Are you sure to delete this row?'))return false;")

            End If

        End If

    Catch ex As Exception

    End Try

End Sub

不要忘记适当处理你的异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接