2009-09-16 30 views
7

我有一些第三方控件,一些ajaxy的東西,一些正常的ASP.NET Button控件的ASP.NET(C#)頁面。點擊後C# - ASP.NET按鈕單擊事件不工作

按鈕單擊事件不火。

雙擊在設計模式按鈕,在VS 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"); 
} 

任何想法?它可能是阿賈克斯或什麼?也許第三方「大肆」的網格控制?

更新:
我沒有解決這個問題一兩個月前,等我回來這個問題來回答它爲後人卻想不起到底我定了! (詛咒你,老一輩!)通過用jQuery UI代替一些ASP.NET AJAX控件,我取得了一些有限的成功,但我認爲真正的解決方案是其中一個標記中的一個屬性指向一個控件不再存在。

如果你在這個同樣的情況是,嘗試,讓我在評論中知道什麼可行,我會後的正確答案。

+1

是否有任何JS可以攔截和取消表單提交? – 2009-09-16 01:15:24

+0

在頁面上聲明瞭一些js函數,但在頁面加載時沒有運行 - 是我在尋找什麼? – MGOwen 2009-09-16 01:40:12

+0

這可能是由於您的頁面上的某種Ajax控件干擾了帖子。開始刪除控件,直到開始執行事件。 – 2010-02-22 05:45:54

回答

2

變化

CodeFile="CompanyCompliance.aspx.cs" 

CodeBehind="CompanyCompliance.aspx.cs" 

相關問題:CodeFile vs CodeBehind

+0

謝謝,但它不編譯,我得到「無法加載類型'CompanyCompliancePage'。CompanyCompliance.aspx \t 1」。這可能是因爲它在vs 2008(asp.net 3.5)中,因此使用部分類作爲頁面後面的代碼? – MGOwen 2009-09-16 01:32:05

+0

是否有.designer.cs類? 還要確保Inherits =「CompanyCompliancePage」匹配您的類名,您可能需要完全限定它的名稱...... 如果所有其他都失敗,請重命名您當前的頁面,然後執行Add> New Item> Web Content Form>將其命名爲'CompanyCompliance '確保你可以放下一個按鈕並調用onclick處理程序,一旦這個工作正常,就可以像現有的那樣複製標記/代碼。 – TJB 2009-09-16 01:38:29

+0

我認爲designer.cs和CodeBehind =「」主要是針對舊版本的.net ......這就是你的鏈接似乎在說的。這是不正確的? – MGOwen 2009-09-16 02:15:51

2

的繼承指令似乎指向一個不存在的類型。

參加後面的CompanyCompliance頁的文件中的代碼一看 - (「CompanyCompliance.aspx.cs」)。

你應該找到正確的命名空間和類似於「public partial class xxx」的地方,其中xxx是應該與你的inherits指令相對應的類的名字。也許你必須完全符合TJB所述的名稱。

+0

謝謝,但在發佈問題之前檢查了所有這些,該類型存在。 – MGOwen 2009-09-23 01:40:16

3

最近經歷了同樣的問題 - 原因最終被確定爲該按鈕在提交前被juavascript方法禁用(旨在防止多次提交),並且不幸的是,Web窗體似乎在按鈕允許之前檢查按鈕的啓用狀態要觸發的代碼隱藏事件。

+0

謝謝查理一個導致validation = false工作! – shradha 2013-04-25 05:20:32

15

在調試過程中,檢查按鈕的CausesValidation屬性。出於某種原因,我的某個頁面有一個按鈕默認爲「True」。當我明確地將其設置爲「假」時,一切都奏效了。

4

我剛纔有這個問題,它是由另一個具有AutoPostBack =「true」的控件引起的,它會在按鈕有機會提交表單以觸發點擊事件之前提交表單。

9

我知道現在應該解決這個問題,但只是爲了分享 - 我剛剛有一個類似的問題。在我的情況下,問題是我在頁面中有一個RequiredFieldValidator,這是不可見的,因爲它是彈出窗口的一部分。該驗證器應該只在點擊其相關的「保存」按鈕時才被調用,但由於我沒有設置任何ValidationGroup,所以它將阻止頁面提交任何點擊的按鈕。向右按鈕添加ValidationGroup可解決問題。

0

對於未來的答案者:如果你是落後分配在代碼中單擊處理程序,確保它是不是裏面的IsPostBack ==假支票:

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

我有這個問題我已經改變了按鈕屬性「UseSubmitBehavior」= false。現在它正在工作。

+1

未來,請在您的答案中更詳細。如果你提供瞭解釋你做了什麼,爲什麼你做了,最好是使用代碼和/或官方文檔,這對每個人都是很有幫助的。 – DennisW 2015-02-20 08:32:11

2

我有一個類似的問題,它真的很棘手。我最近將VS 2005 ASP.NET 2.0 Web窗體應用程序遷移到VS 2010 ASP.NET 4.0。

這是很難安裝和越野車如預期,但沒有觸發點擊事件的按鈕的問題越來越緊張我的神經。

最後,它就像在site.master表單中不聲明提交動作一樣簡單。我改變:

<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"> 

繁榮。問題解決了。我希望它可以節省幾天的時間給別人。可悲的是,我自己在互聯網上找不到任何關於它的事情。