如何获取我的asp:按钮在OnClick事件中执行代码?

时间:2013-08-09 12:31:38

标签: c# asp.net ascx

首先......我是ASP.net和C#的菜鸟。我正在更新已存在的页面以添加按钮..

我的代码..

<div style="padding: 10px;float: left;"><table><tr><td><asp:Button id="DoSomething" Text="Build Patch" runat="server" OnClick="DoSomething_click" /><br /></td></tr></table></div>

这存在于我的ascx控件中...背后的代码是......

    protected void DoSomething_click(object sender, System.EventArgs e)
    {
        Response.Write("<script> alert('Hi');</script>");
    }

它在

的default.aspx页面上连线
<%@ Register Src="~/ui/MyView.ascx"  TagName="MyView" TagPrefix="UC" %>

并用于asp:repeater ......

<UC:MyView PB=<%# Container.DataItem %> runat="server"></UC:MyView>

转发器在<td>

内创建按钮

我想我的问题是如何连接这些按钮的onclick?我调试,我的DoSomething_click方法永远不会命中。

2 个答案:

答案 0 :(得分:1)

基本上,您需要将ButtonClick事件从UserControl传递到您的网页(包含此userControl)。这被称为泡泡事件

用户控制部分:

为Button定义OnClick事件。但是,在这种情况下,您将把它传递到.aspx页面。

public partial class MyView : System.Web.UI.UserControl
{
    public event EventHandler SomethingButtonClick;

    protected void DoSomething_Click(object sender, EventArgs e)
    {
        //pass the event up to the aspx page. also called bubbling up the event.
        if (this.SomethingButtonClick != null)
            this.SomethingButtonClick(this, e);
    }
}

您的页面包含UserControl:

SomethingButtonClick事件中的Page_Init()事件的事件处理程序设置为:

protected void Page_Init(object sender, EventArgs e)
{
   MyView1.SomethingButtonClick += new EventHandler(MyView_SomethingButtonClick);
}

在页面代码中添加/定义此MyView_SomethingButtonClick

protected void MyView_SomethingButtonClick(object sender, EventArgs e)
{
    //handle the event 
 Response.Write("<script> alert('Hi');</script>");
}

答案 1 :(得分:0)

首先,尝试在脚本代码中指定type="text/javascript"

<script type="text/javascript">alert('hi');</script>

假设不起作用:

如果我理解正确,您正在尝试将动态创建的按钮链接到代码隐藏中的代码。这可能非常非常奇怪。我建议使用&#34;代理功能&#34;各种各样的。在页面的其他位置创建一个由按钮调用的javascript函数&#39;点击事件。然后,此javascript函数可以从那里启动回发。我会看看能否找到我在其他地方使用过的例子。

编辑:我无法找到原始示例,但这是一个很好的参考:ASP.NET postback with JavaScript

请注意,__doPostBack()功能有两个下划线,而不是一个。