2009-09-16 22 views
7

मेरे पास कुछ तृतीय पक्ष नियंत्रण, कुछ अजीब सामान और कुछ सामान्य एएसपी.नेट बटन नियंत्रण के साथ एक एएसपी.नेट (सी #) पृष्ठ है।सी # - एएसपी.नेट बटन पर क्लिक न करें

क्लिक करने पर बटन क्लिक ईवेंट आग नहीं लगती है।

वीएस 2008 में डिज़ाइन मोड में बटन को डबल-क्लिक करने से कोड-बैक पर स्विच हो जाता है लेकिन ईवेंट हैंडलर नहीं बनाता है।

ईवेंट हैंडलर मैन्युअल रूप से बनाना कोई मदद नहीं करता है।

पूरे पृष्ठ को यहां शामिल करने के लिए बहुत बड़ा है, लेकिन यह शीर्ष सा है:

<%@ Page Language="C#" MasterPageFile="~/basewidepage2.master" AutoEventWireup="true" EnableEventValidation="false" CodeFile="CompanyCompliance.aspx.cs" Inherits="CompanyCompliancePage" Title="3DSS" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 
<%@ Register Assembly="obout_Grid_NET" Namespace="Obout.Grid" TagPrefix="cc2" %> 
<%@ Register Src="usercontrols/CalendarEx.ascx" TagName="CalendarEx" TagPrefix="uc2" %> 
<%@ MasterType VirtualPath="~/basewidepage2.master" %> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceholder1" runat="Server"> 

    <script type="text/javascript"> 
     // a bunch of function declarations 
    </script> 

... और पृष्ठ पर अपने बटन घोषणा:

<asp:Button ID="LicenseCsvButton" runat="server" Text="Export to CSV" OnClick="LicenseCsvButton_Click" /> 

... और कोड-पीछे:

protected void LicenseCsvButton_Click(object sender, EventArgs e) 
{ 
    // get data 
    CompanyCompliance cc = new CompanyCompliance(Master.theCompany.ID); 
    DataTable dt = cc.BusinessLicenses.Tables[0]; 

    // send to browser as download 
    Tools.SendTableAsCsvToBrowser(Response, dt, "LicenseData"); 
} 

कोई विचार? क्या यह अजाक्स या कुछ हो सकता है? शायद तीसरी पार्टी "obout" ग्रिड नियंत्रण?

अद्यतन:
मैं ठीक किया इस एक महीने या दो महीने पहले, तो मैं वापस इस सवाल का भावी पीढ़ी के लिए यह जवाब देने के लिए के लिए आया था, लेकिन याद नहीं कर सकता है वास्तव में मैं इसे कैसे तय! (आपको शाप दें, बुढ़ापे!) मुझे jQuery एआई के साथ कुछ एएसपी.NET AJAX नियंत्रणों को प्रतिस्थापित करके कुछ सीमित सफलता मिली लेकिन मुझे लगता है कि असली समाधान यह था कि टैग में से एक में गुणों में से एक नियंत्रण पर इशारा कर रहा था जो अब अस्तित्व में नहीं था।

यदि आप इसी स्थिति में हैं, तो कोशिश करें और मुझे बताएं कि टिप्पणियों में क्या काम करता है और मैं सही उत्तर पोस्ट करूंगा।

+1

क्या कोई जेएस है जो फ़ॉर्म सबमिशन को रोक और रद्द कर सकता है? –

+0

पृष्ठ पर कुछ जेएस फ़ंक्शन घोषित किए गए हैं, लेकिन पेज लोड होने पर कुछ भी नहीं चलता है - क्या मैं यही खोज रहा हूं? – MGOwen

+0

यह आपके पृष्ठ पर किसी प्रकार के AJAX नियंत्रण के कारण पोस्ट के साथ हस्तक्षेप की संभावना है। जब तक आप ईवेंट निष्पादित करना प्रारंभ नहीं करते तब तक नियंत्रणों को हटाने शुरू करें। –

उत्तर

2

बदलें

CodeFile="CompanyCompliance.aspx.cs" 

को
CodeBehind="CompanyCompliance.aspx.cs" 

संबंधित प्रश्न: CodeFile vs CodeBehind

+0

धन्यवाद, लेकिन यह संकलित नहीं करता है, मुझे "कंपनी लोडप्लायंस पेज 'टाइप नहीं किया जा सका। कंपनी कॉम्पलियंस.एएसपी \t 1"। ऐसा इसलिए हो सकता है क्योंकि यह बनाम 2008 (एएसपीनेट 3.5) में है और इसलिए पेज के पीछे कोड के लिए आंशिक कक्षाओं का उपयोग कर रहा है? – MGOwen

+0

वहाँ एक .designer.cs कक्षा है? यह भी सुनिश्चित करें कि Inherits = "CompanyCompliancePage" आपके क्लासनाम से मेल खाता है, आपको इसे पूरी तरह से योग्यता प्राप्त करने की आवश्यकता हो सकती है ... यदि अन्य सभी विफल हो जाते हैं, तो अपने वर्तमान पृष्ठ का नाम बदलें, फिर जोड़ें> नया आइटम> वेब सामग्री फ़ॉर्म> नाम दें 'कंपनी कॉम्पलाइंस 'सुनिश्चित करें कि आप केवल एक बटन में ड्रॉप कर सकते हैं और ऑनक्लिक हैंडलर का आह्वान कर सकते हैं, एक बार काम करने के बाद मार्कअप/कोड जितना अधिक हो सके उतना कॉपी करें जितना आप मौजूदा से कर सकते हैं। – TJB

+0

मैंने सोचा था कि designer.cs और CodeBehind = "" मुख्य रूप से सिर्फ .NET के पुराने संस्करणों के लिए थे ... यही वह लिंक है जो आपका लिंक कह रहा है। क्या यह सही नहीं है? – MGOwen

2

inherits निर्देश एक गैर existant प्रकार को इंगित करने लगता है।

कंपनी कॉम्प्लाइंस पेज - ("CompanyCompliance.aspx.cs") की फ़ाइल के पीछे कोड में एक नज़र डालें।

आपको सही नामस्थान और "सार्वजनिक आंशिक वर्ग xxx" जैसे कुछ मिलना चाहिए जहां xxx कक्षा का नाम है जो आपके विरासत निर्देशों के अनुरूप होना चाहिए। हो सकता है कि आपको पहले ही टीजेबी के रूप में नाम पूरी तरह अर्हता प्राप्त करनी पड़े।

+0

धन्यवाद, लेकिन प्रश्न पोस्ट करने से पहले यह सब जांच लिया, प्रकार मौजूद है। – MGOwen

3

हाल ही में एक ही मुद्दे का अनुभव किया - कारण अंततः यह निर्धारित किया गया कि बटन को एक जावास्क्रिप्ट विधि द्वारा अक्षम किया गया था (एकाधिक सबमिशन को रोकने के लिए डिज़ाइन किया गया), और दुर्भाग्यवश वेब फ़ॉर्म बटन की सक्षम स्थिति को जांचने से पहले प्रतीत होता है ट्रिगर करने के लिए codebehind घटना।

+0

धन्यवाद चार्ली ए कारण कारणता = झूठी काम किया! – shradha

15

डीबगिंग के दौरान, अपने बटन की कारणों की वैधता संपत्ति की जांच करें। किसी कारण से, मेरे पृष्ठों में से एक बटन "True" के लिए डिफ़ॉल्ट रूप से एक बटन था। जब मैंने स्पष्ट रूप से इसे "गलत" सब कुछ काम करने के लिए सेट किया।

4

मुझे अभी यह समस्या थी और यह ऑटोपॉस्टबैक = "सच्चा" वाला एक और नियंत्रण था जिसके कारण बटन को क्लिक ईवेंट ट्रिगर करने के लिए फ़ॉर्म सबमिट करने का मौका मिलने से पहले फ़ॉर्म सबमिट करेगा।

9

मुझे पता है कि इसे अभी तक हल किया जाना चाहिए, लेकिन सिर्फ साझा करने के लिए - मुझे बस एक ही समस्या थी। मेरे मामले में, समस्या यह थी कि मेरे पास एक पृष्ठ में RequiredFieldValidator था, जो दिखाई नहीं दे रहा था क्योंकि यह पॉपअप का हिस्सा था। उस वैधकर्ता को केवल "सेव" बटन पर क्लिक करते समय ही बुलाया जाना था, लेकिन चूंकि मेरे पास ValidationGroup सेट नहीं था, इसलिए यह पृष्ठ को किसी भी क्लिक किए गए बटन के लिए सबमिट करने से रोक देगा। दाएं बटन पर ValidationGroup जोड़ना समस्या को हल करता है।

0

भविष्य जवाब चाहने वालों के लिए:

void Page_Load (object oSender, EventArgs oEventArgs) 
{ 
    if (IsPostBack == false) 
    { 
     oButton += new EventHandler(oButton_Click); // does not work 
    } 
    oButton += new EventHandler(oButton_Click); // does work 
} 
1

मैं इस समस्या थी मैं बटन को बदल दिया है: आप के पीछे कोड में क्लिक हैंडलर बताए रहे हैं, तो यकीन है कि यह एक IsPostBack अंदर == झूठी जांच नहीं है संपत्ति "उपयोग सबमिट करें" = झूठी। अब यह काम कर रहा है।

+1

भविष्य में, कृपया अपने उत्तरों में और अधिक विस्तृत जानकारी प्राप्त करें।यदि आप जो कुछ भी करते हैं और आपने ऐसा क्यों किया है, तो स्पष्टीकरण प्रदान करते हैं, अधिमानतः कोड और/या आधिकारिक दस्तावेज के साथ, यह सभी के लिए एक बड़ी मदद होगी। – DennisW

2

मुझे एक समान समस्या थी, और यह वास्तव में मुश्किल था। मैंने हाल ही में वीएस 2005 एएसपी.NET 2.0 वेब फॉर्म ऐप को वीएस 2010 एएसपी.नेट 4.0 में माइग्रेट किया है।

अपेक्षा के अनुसार सेटअप और छोटी गाड़ी बनाना मुश्किल था, लेकिन क्लिक घटना को फायर करने वाले बटनों का मुद्दा मेरे तंत्रिकाओं पर नहीं था।

अंत में, साइटमैस्टर फॉर्म में सबमिट कार्रवाई घोषित करने जितना आसान नहीं था। मैं बदल दिया है:

<FORM runat="server" name="MainForm" method="post" action="Default.aspx" id="m_mainForm" enctype="multipart/form-data"> 

को
<FORM runat="server" name="MainForm" method="post" id="m_mainForm" enctype="multipart/form-data"> 

बूम। समस्या सुलझ गयी। मुझे उम्मीद है कि यह किसी के लिए समस्या निवारण के दिन बचाता है। अफसोस की बात है, मुझे अपने बारे में इंटरनेट पर कुछ भी नहीं मिला।

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