2011-01-25 22 views
26

ASP.Net Gridview'da "silme onayla" seçeneği nasıl eklenir?ASP.Net Gridview'de "silme onayla" seçeneği nasıl eklenir?

+0

);

 $(document).on("click", "a", function() { if (this.innerHTML.indexOf("Delete") == 0) { return confirm("Are you sure you want to delete this record?"); } }); 

faydası Umut:

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)); } } 

cevap

57

Bu yapmalı.

burada buldum: 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> 
+0

Bir görüntüyü kullanmak istemezseniz, –

4

Düğmenin OnClientClick kullanarak yapabilirsiniz.

+0

'un altındaki @ Saksham-Gupta çözümünde görüldüğü gibi bir ImageButton yerine bir LinkButton'u kolayca kullanabilirsiniz, ancak benim için çalıştı ancak bir açılır ileti kutusu şeklinde , web sayfası içinde görünmek için bir yol yoktur, mesaj kutusu olarak değil –

11

Bunu biraz farklı yaptım. Izgara görünümümde AutoGenerateDeleteButton="true"'u ayarlıyorum. Sil düğmesini bulmak için jQuery kullanıyorum ve bulunan Anchor'lara bir tıklama olayı ekledim.

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

Yapmam gerekenler için bu hızlı ve kolaydır. Sadece Sil'i görüntüleyen sayfada bulunan Her Anchor'un jQuery tarafından seçileceğini ve etkinliğin buna ekleneceğini unutmayın.

+0

Çalışır güzel. İhtiyaç duyarsanız, ızgara içindeki demirleri aramak için daha spesifik bir seçici ekleyerek işleri daha da geliştirebilirsiniz. –

0

Bir kullanıcı, javascript confirm() işlevini kullanarak aldığı 'Emin misiniz' açılır penceresinin üzerine tıkladığında 'return false' yanıtını onurlandırmak için bir commandField Delete düğmesi almada sorun yaşıyordum. Bunu bir şablon alanına değiştirmek istemedim.

Sorun, gördüğümüz gibi, bu commandField Düğmelerinin, geri yüklemeyi gerçekleştirmek için onlarla ilişkili bazı JavaScript'leri zaten vardı. Sadece onaylama() işlevinin eklenmesi hiç etkili değildi. İşte

ben onu çözdüm nasıl: JQuery kullanarak

, ben ilk her (birkaç vardır) sayfasındaki silme düğmesi bulunan, ziyaretçi kabul etti ya doğrulayan pop- iptal olmasına bağlı olarak düğmenin ilişkili Javascript manipüle yukarı.

Ben Güncellemeiçin kullanılan ve düğmelerini sil:

<script language="javascript" type="text/javascript"> 
$(document).ready(function() { 

       $('input[type="button"]').each(function() { 

        if ($(this).val() == "Delete") { 
         var curEvent = $(this).attr('onclick'); 
         var newContent = "if(affirmDelete() == true){" + curEvent + "};" 
         $(this).attr('onclick',newContent);      
        } 
       }); 
} 

function affirmDelete() {  
       return confirm('Are you sure?'); 
} 
</script> 
1

bu deneyin. Edit düğmesine dokunmuyor. Otomatik oluşturulan düğmeleri kullanabilirsiniz.

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?');"; 
     } 

    } 
19

sizin GridviewAutoGenerateDeleteButton="true" ile kullandıysanız, LinkButton dönüştürebilir:

  1. tıklayın sonra GridView görevler ve Düzenleme Sütunlar. https://www.flickr.com/photos/32784002@N02/15395933069/

  2. Seç Seçilmiş alanlarda yılında silin ve bir TemplateField içine dönüştürme bu alan üzerine tıklayın.https://www.flickr.com/photos/32784002@N02/15579904611/

  3. Artık reklam LinkButton oluşturulur: Sonra OK tıklayın. Böyle LinkButton için OnClientClick olay ekleyebilirsiniz: i diğer sütunları ile birlikte basit bir giriş yapmak için @statmaster verdiği cevabı modifiye yüzden
    OnClientClick="return confirm('Are you sure you want to delete?'); "

4

Ben herhangi bir görüntüyü istemiyordu. Metin Rengi, Forecolor Property kullanılarak değiştirilebilir.

+0

Bu, gridview – JoshYates1980

3

Gri ​​görünümden bir kaydı silmeden önce bu onaylama yöntemini eklemekten hoşlanırım. Bu, aspx sayfasında bir GridView web denetimi içinde yer alan CommandField tanımıdır. Burada hiçbir şey fantezi değil - sadece bir Commandfield.

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

Sonra ben yapmak zorunda olduğunu GridView denetiminin RowDeleting olay için bazı kod eklemek oldu. Bu olay,
'dan önce numaralı telefon hattını tetikler. Bu satır, aslında kullanıcının onayını almanızı ve sonuçta iptal etmek istememesi durumunda etkinliği iptal etmenizi sağlar. İşte RowDeleting olay işleyicisi koymak kod şudur:

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 

Ve bu iyi iş gibi görünüyor.

+1

@ 'da onay ile silmenin en kolay yoludur. @ Statmaster'un cevabı bunun için tercih edilir. İlk olarak, sadece aspx sayfasına kod yazmanız gerekir (bu, hem aspx sayfasındaki hem de kod sayfasındaki kod gerektirir). İkinci olarak, bu çözüm için MsgBox gereklidir ve bir web sunucusunda çalışmayabilir. ScriptManager'ı, MsgBox kullanmak yerine, arka planda bir uyarı görüntülemek için kullanabilirsiniz ve hem Visual Studio'da hem de web sunucusunda çalışır. Ama neden sadece arka planda herhangi bir kod gerektirmeyen basit çözümü kullanmıyorsunuz? –

0

Bu kod benim için gayet güzel çalışıyor.

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

Oldukça onlar silmeye çalıştığınız öğe tam olarak kullanıcıyı bilgilendirmek için GridViewRowDataBound olay kodu ekleme gibi. Biraz daha iyi kullanıcı deneyimi? Eklemek içeride seçeneği "onayla sil" istiyor

0

JavaScript çözümü seviyorum ve dinamik ajax yükleme ile çalışmak için bazı güncellemeler var gridview düğmesi veya dış gridview?
İlgili konular