C# - ASP.NET按钮单击事件不起作用

MGO*_*wen 7 c# asp.net obout event-handling

我有一个ASP.NET(C#)页面,其中包含一些第三方控件,一些ajaxy东西和一些普通的ASP.NET Button控件.

单击时,按钮单击事件不会触发.

在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>
Run Code Online (Sandbox Code Playgroud)

...和我在页面上的按钮声明:

<asp:Button ID="LicenseCsvButton" runat="server" Text="Export to CSV" OnClick="LicenseCsvButton_Click" />
Run Code Online (Sandbox Code Playgroud)

......以及代码隐藏:

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");
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?它可能是ajax还是什么?也许第三方"obout"网格控制?

更新:
我确实在一两个月前解决了这个问题,所以我回到这个问题来为后代回答这个问题,但是不记得我是怎么解决的!(诅咒你,老了!)我用jQuery UI取代了一些ASP.NET AJAX控件取得了一些有限的成功,但我认为真正的解决方案是其中一个标签中的一个属性指向一个控件不再存在.

如果您处于同样的情况,请尝试并让我知道评论中的作用,我会发布正确的答案.

小智 15

在调试期间,请检查按钮的CausesValidation属性.出于某种原因,我的一个页面有一个按钮默认为"True".当我明确地将其设置为"False"时,一切正常.


Fel*_*tro 9

我知道现在应该解决这个问题,但只是为了分享 - 我只是遇到了类似的问题.在我的情况下,问题是我RequiredFieldValidator在页面中有一个不可见的页面,因为它是弹出窗口的一部分.该验证器应该仅在单击其相关的"保存"按钮时被调用,但由于我没有任何ValidationGroup设置,它将阻止页面提交任何单击的按钮.添加ValidationGroup到右侧按钮解决了问题.


TJB*_*TJB 2

改变

CodeFile="CompanyCompliance.aspx.cs" 
Run Code Online (Sandbox Code Playgroud)

CodeBehind="CompanyCompliance.aspx.cs"
Run Code Online (Sandbox Code Playgroud)

相关问题:CodeFile vs CodeBehind