2008-10-20 8 views
25

पर क्लिक करें मेरे पास GridView एएसपीनेट एप्लिकेशन में नियंत्रण है, जिसमें <asp:buttonField>type="image" और CommandName="Delete" है।एएसपी से पहले जावास्क्रिप्ट: बटनफ़िल्ल्ड

OnRowDelete ईवेंट तक पहुंचने से पहले जावास्क्रिप्ट का एक टुकड़ा निष्पादित करने का कोई तरीका है?

मैं पंक्ति को हटाने से पहले बस एक साधारण पुष्टि चाहता हूं।

धन्यवाद!

संपादित: कृपया ध्यान दें कि <asp:ButtonField> टैग एक OnClientClick विशेषता नहीं है।

+0

मैं ButtonField से विरासत है, और यह करने के लिए OnClientClick विशेषता जोड़ने में कामयाब रहा था। लेकिन किसी कारण से यह वास्तविक हटा नहीं करता है। –

उत्तर

23

मैं इसके बजाय टेम्पलेटफ़िल्ल्ड का उपयोग करता हूं, और आइटम एम्प के साथ आइटम टेम्पलेट को पॉप्युलेट करता हूं: बटन या एएसपी: छविबटन, जो आवश्यक है उसके आधार पर। फिर आप उसी तर्क को निष्पादित कर सकते हैं कि RowCommand ईवेंट तब करने जा रहा था जब इसे हटाए गए आदेश को रोक दिया गया था।

उन बटनों में से किसी एक पर मैं इसके बाद जावास्क्रिप्ट पुष्टिकरण संवाद निष्पादित करने के लिए OnClientClick प्रॉपर्टी का उपयोग करूंगा।

<script type="text/javascript"> 
    function confirmDelete() 
    { 
     return confirm("Are you sure you want to delete this?"); 
    } 
</script> 

... 

<asp:TemplateField> 
    <ItemTemplate> 
    <asp:ImageButton ID="DeleteButton" runat="server" 
     ImageUrl="..." AlternateText="Delete" ToolTip="Delete" 
     CommandName="Delete" CommandArgument='<%# Eval("ID") %>' 
     OnClientClick="return confirmDelete();" /> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

नमूना कोड कृपया? –

+4

अभी एक परियोजना से नमूना हुआ है जिसे मैंने अभी खुला है। – tvanfosson

+0

क्षमा करें मुझे कुछ नमूना कोड प्रदान करना चाहिए था। इसे उत्तर देने/संपादित करने के लिए tvanfosson के लिए धन्यवाद। –

0

तो मैं एक जावास्क्रिप्ट समारोह है:

function confirmDeleteContact() { 
    if (confirm("Are you sure you want to delete this contact?")) { 
    document.all.answer.value="yes"; 
    } else { 
    document.all.answer.value="no"; 
    } 
} 

और मैं बहुत की तरह एक ग्रिड आइटम से तार:

Sub dgbind(ByVal sender As Object, ByVal e As DataGridItemEventArgs) Handles dgcontacts.ItemDataBound 
    Select Case e.Item.ItemType 
     Case ListItemType.Item, ListItemType.AlternatingItem 
      CType(e.Item.Cells(9).Controls(0), System.Web.UI.WebControls.LinkButton).Attributes.Add("onclick", "javascript:confirmDeleteContact();") 
    End Select 
End Sub 

यह कुछ पुराने कोड है, इसलिए मैं कुछ देख चीजें जो मैं बदल सकता हूं, लेकिन नैतिक यह है: यदि सब कुछ विफल हो जाता है, पंक्ति बाध्यकारी के दौरान जावास्क्रिप्ट "ऑनक्लिक" जोड़ें। "document.all.answer.value" एक छिपी हुई फ़ील्ड है जिसमें runat=server है ताकि मैं पोस्टबैक पर मान पढ़ सकूं।

2

GridView के RowCreated ईवेंट हैंडलर में, FindControl का उपयोग नामित बटन मिल जाए, और गुण संग्रह में जोड़ने के:

btn.Attributes.Add("onclick", "return confirm('delete this record?');"); 

आपका ASP.Net कोड केवल तभी की पुष्टि() सच है निष्पादित किया जाएगा , यानी ठीक किया गया है।

+2

यह केवल तभी काम करता है जब आपके पास बटन टाइप बटन बटन पर सेट हो –

14

मैंने पाया कि jQuery का उपयोग करने के onClick ईवेंट तार की है यह करने के लिए सबसे खूबसूरत तरीका:

<script type="text/javascript"> 
    $(".deleteLink").click(function() { 
     return confirm('Are you sure you wish to delete this record?'); 
    }); 
</script> 

... 

<asp:ButtonField ButtonType="Link" Text="Delete" 
    CommandName="Delete" ItemStyle-CssClass="deleteLink" /> 

सूचना है कि मैं एक मनमाना CSS वर्ग का उपयोग लिंक बटन की पहचान।

-2

आपके लिए बेहतर ऐड संदर्भ System.Windows.Forms अगर आप का उपयोग buttonfield ... यह हमेशा सभी .net ढांचे में उपलब्ध है और asp.net का समर्थन करता है ..

इस

अपनी पसंद करता है, तो buttonfield है तुम्हारा सबसे अच्छा विकल्प .. नमूना:

using System.Windows.Forms; 

protected void BorrowItem_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 

    if (e.CommandName == "Delete") 
    { 

     if (System.Windows.Forms.MessageBox.Show("Do you want to delete", "Delete",MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification) != System.Windows.Forms.DialogResult.OK) 
     { 
      return; 
     } 
    } 
//Continue execution... 
} 

//drimaster 
संबंधित मुद्दे