2009-09-16 27 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"> 

繁荣。问题解决了。我希望它可以节省几天的时间给别人。可悲的是,我自己在互联网上找不到任何关于它的事情。