3

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

4

3 回答 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. 标题是该行标题的数据列名称。您在此处使用的内容取决于数据的列/属性名称。
  3. 数据源这个词也是如此——这就是我们所拥有的行。您需要替换为您的数据所调用的内容。
  4. 我认为 <%$ resource_name %> 应该适用于文本 - 但还没有这样做。
于 2012-06-15T00:03:18.563 回答
0

如果您使用的是 GridView,那么您就走错了路。专业人士不使用它。他们几乎只使用 ListView。所以不要打扰它。大多数书籍不教授工业最佳实践。

于 2012-06-15T02:06:28.227 回答
0

您还可以在网格视图的 RowDataBound 上动态地将 onlick 属性添加到删除链接。

在下面的代码中,我们有一个 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

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

于 2012-09-25T11:39:59.450 回答