【问题标题】:asp.net Button.Click event not firingasp.net Button.Click 事件未触发
【发布时间】:2012-05-06 03:14:25
【问题描述】:

我有一个 ASP.WebSite,我在其中使用

在 aspx.cs 上动态添加了一些表单控件
form1.Controls.Add( " Object of Control ");

另外一个已经在aspx文件中的表单上添加了一个按钮

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Add" UseSubmitBehavior="false" />

现在,当我运行程序时,它会将 Button1 转换为 HTML 提交按钮,如下所示

<input type="button" name="Button1" value="Add" onclick="javascript:__doPostBack('Button1','')" id="Button1" />

表格标签变成了

<form name="form1" method="post" action="Add1.aspx" id="form1" enctype="multipart/form-data">

当我单击 Button1 时,它会提交表单,而不是调用 Code Behind 上的函数。

如何调用 Button1 的 OnClick 事件中指定的方法 Button1_Click

请帮忙。

【问题讨论】:

  • 此语句 onclick="javascript:__doPostBack('Button1','')" 将导致调用 Button1_Click 事件。你确定你没有触发这个事件吗?

标签: c# asp.net events button event-handling


【解决方案1】:

您是否在代码隐藏中实现了点击事件处理程序?

protected void Button1_Click(Object sender, EventArgs e)
{
    Button btn = (Button)sender;
}

Button.Click Event

我不知道这个问题与您的动态控制问题有什么关系,因为Button1 是以声明方式添加的。

【讨论】:

  • 我编辑了 OP 的标题。你说得对,与动态控件没有任何关系。
  • 实际上,我想获取在以声明方式添加的 Button1 的 onclick 事件上动态添加的控件的值。但是当我点击 Button1 时,它只是提交了调用 Button1_Click 的表单。有没有其他方法可以动态添加控件并获取 buttonClick 事件的值?
  • @PrasadJadhav: 1.) 您还没有展示如何动态添加控件(" Object of Control " 不是控件)。 2.) 提交页面是典型的回发。因此,在在服务器上处理按钮的点击事件之前,它必须被提交/回发。 3.) 你想动态添加什么样的控件? 4.) 你想在哪里添加它们(例如在 Panel/Div/GridView 等中)。 5.) 你想如何检测这些控件(例如通过类似的 ID 或位置)? 6.) 为什么要动态添加它们而不使用任何内置的 Web 数据绑定控件?
  • 好的。 1)大多数控件都是文本框,我使用 TextBox 添加 TextBox1 = new TextBox(); TextBox1.ID = 名称; form1.Controls.Add(TextBox1); 3) 通常我会添加 TextBox、DropDownList 和 CheckBox。 4)我直接在表单上添加它们。使用样式控件我在表单上给出位置。
  • 5) 检测我有一个字符串变量,其中包含动态添加控件的所有 ID 名称。我正在使用 Textbox tbox=(TextBox)Page.FindControl("name"); 6)根据req,用户输入的变量正在改变。因此,我没有创建单独的表单,而是在同一页面上动态添加控件。如果我开始为每个请求创建单独的页面,那么我将很难跟踪每个页面,因为有很多差异。请求页面。我的问题是我只想获取用户在动态控件中输入的值并将它们添加到数据库中。
【解决方案2】:

我应该动态添加按钮控件如下:

    b1.ID = "EDIT";
    b1.Text = "Add";
    b1.Click +=new System.EventHandler(this.Button1_Click);
    b1.Style["Position"] = "Absolute";
    b1.Style["Top"] = "10px";
    b1.Style["Left"] = "20px";
    form1.Controls.Add(b1);

现在在Button1的点击事件上调用函数Button1_Click。 在这种情况下,我必须手动创建函数 Button1_Click,即不仅仅是双击设计页面。

【讨论】:

    【解决方案3】:

    您要动态添加的控件,您必须在页面加载时添加它。

    然后就可以正常使用了。

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 2011-01-22
      • 1970-01-01
      • 2013-06-19
      • 2010-09-09
      • 2023-03-05
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多