1

首先...我是 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>

中继器在 a 内创建按钮<td>

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

4

2 回答 2

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:

SomethingButtonClickevent in Page_Init()event 的事件处理程序设置为:

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>");
}
于 2013-08-11T05:38:43.980 回答
0

首先,尝试type="text/javascript"在脚本标签内指定:

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

假设这不起作用:

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

编辑:我找不到我原来的例子,但这是一个很好的参考:ASP.NET postback with JavaScript

请注意,该__doPostBack()函数有两个下划线,而不是一个。

于 2013-08-09T12:39:05.817 回答