Как добавить опцию «подтвердить удаление» в ASP.Net Gridview? - PullRequest
32 голосов
/ 25 января 2011

Как добавить опцию «подтвердить удаление» в ASP.Net Gridview?

Ответы [ 14 ]

64 голосов
/ 25 января 2011

Это должно сделать это.

Я нашел это здесь: http://forums.asp.net/p/1331581/2678206.aspx

<asp:TemplateField ShowHeader="False">
    <ItemTemplate>
        <asp:ImageButton ID="DeleteButton" runat="server" ImageUrl="~/site/img/icons/cross.png"
                    CommandName="Delete" OnClientClick="return confirm('Are you sure you want to delete this event?');"
                    AlternateText="Delete" />               
    </ItemTemplate>
</asp:TemplateField>  
24 голосов
/ 20 октября 2014

Если ваше Gridview используется с AutoGenerateDeleteButton="true", вы можете преобразовать его в LinkButton:

  1. Нажмите Задачи GridView , а затем РедактироватьСтолбцы .https://www.flickr.com/photos/32784002@N02/15395933069/

  2. Выберите Удалить в Выбранные поля и нажмите Преобразовать это поле в TemplateField .Затем нажмите OK : https://www.flickr.com/photos/32784002@N02/15579904611/

  3. Теперь ваш LinkButton будет сгенерирован.Вы можете добавить OnClientClick событие к LinkButton следующим образом:
    OnClientClick="return confirm('Are you sure you want to delete?'); "

12 голосов
/ 15 февраля 2012

Я сделал это немного по-другому. В моем gridview я установил AutoGenerateDeleteButton="true". Чтобы найти кнопку удаления, я использую jQuery и добавляю событие щелчка к найденным якорям.

jQuery("a").filter(function () {
        return this.innerHTML.indexOf("Delete") == 0;
        }).click(function () { return confirm("Are you sure you want to delete this record?"); 
});

Это быстро и просто для того, что мне нужно сделать. Просто помните, что каждый якорь на странице, отображающей удаление, будет выбран jQuery и к нему будет добавлено событие.

4 голосов
/ 24 октября 2014

Мне не нужно ни одно изображение, поэтому я изменил ответ, данный @statmaster, чтобы сделать его простым для ввода вместе с другими столбцами.

<asp:TemplateField ShowHeader="False">
        <ItemTemplate>
            <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Delete" OnClientClick="return confirm('Are you sure you want to delete this entry?');">Delete </asp:LinkButton>             
        </ItemTemplate>
</asp:TemplateField>

Цвет текста можно изменить с помощью Forecolorнедвижимости.

4 голосов
/ 25 января 2011

Вы можете сделать, используя OnClientClick кнопки.

OnClientClick="return confirm('confirm delete')"
3 голосов
/ 23 декабря 2015

Мне очень нравится добавлять код в событие GridView RowDataBound, чтобы точно сообщить пользователю, какой элемент он пытается удалить.Чуть лучше пользовательский опыт?

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        LinkButton lnkBtnDelete = e.Row.FindControl("lnkBtnDelete") as LinkButton;

        // Use whatever control you want to show in the confirmation message
        Label lblContactName = e.Row.FindControl("lblContactName") as Label;

        lnkBtnDelete.Attributes.Add("onclick", string.Format("return confirm('Are you sure you want to delete the contact {0}?');", lblContactName.Text));

    }

}
3 голосов
/ 31 января 2015

Мне нравится этот способ добавления запроса подтверждения перед удалением записи из таблицы.Это определение CommandField, вложенное в веб-элемент управления GridView на странице aspx.Здесь нет ничего необычного - просто прямое командное поле.

<asp:CommandField ShowEditButton="true" UpdateText="Save" ShowDeleteButton="True">
  <ControlStyle CssClass="modMarketAdjust" />
</asp:CommandField>

Затем все, что мне нужно было сделать, это добавить некоторый код в событие RowDeleting элемента управления GridView.Это событие вызывает до того, как строка действительно будет удалена, что позволяет получить подтверждение пользователя и отменить событие, если он не хочет отменять все-таки.Вот код, который я вставил в обработчик событий RowDeleting:

Private Sub grdMarketAdjustment_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles grdMarketAdjustment.RowDeleting
  Dim confirmed As Integer = MsgBox("Are you sure that you want to delete this market adjustment?", MsgBoxStyle.YesNo + MsgBoxStyle.MsgBoxSetForeground, "Confirm Delete")
  If Not confirmed = MsgBoxResult.Yes Then
    e.Cancel = True 'Cancel the delete.
  End If
End Sub

И это, кажется, работает нормально.

2 голосов
/ 20 июня 2014

Попробуйте это:

Я использовал для Обновить и Удалить кнопки. Это не касается кнопки Edit . Вы можете использовать автоматически сгенерированные кнопки.

  protected void gvOperators_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if(e.Row.RowType != DataControlRowType.DataRow) return;
        var updateButton = (LinkButton)e.Row.Cells[0].Controls[0];
        if (updateButton.Text == "Update")
        {
            updateButton.OnClientClick = "return confirm('Do you really want to update?');";
        }
        var deleteButton = (LinkButton)e.Row.Cells[0].Controls[2];
        if (deleteButton.Text == "Delete")
        {
            deleteButton.OnClientClick = "return confirm('Do you really want to delete?');";
        }

    }
2 голосов
/ 25 января 2011

Это мой предпочтительный метод.Довольно прямолинейно:

http://www.codeproject.com/KB/webforms/GridViewConfirmDelete.aspx

1 голос
/ 21 января 2019

Хотя многие из этих ответов будут работать, это демонстрирует простой пример использования CommandField в GridView с использованием свойства OnClientClick.

ASPX:

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound"... >
<Columns>
<!-- Data columns here -->
        <asp:CommandField ButtonType="Button" ShowEditButton="true" ShowDeleteButton="true" ItemStyle-Width="150" />
</Columns>
</asp:GridView>

ASPX.CS:

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowIndex != GridView1.EditIndex)
    {
        (e.Row.Cells[2].Controls[2] as Button).OnClientClick = "return confirm('Do you want to delete this row?');";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...