首先......我是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方法永远不会命中。
答案 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()
功能有两个下划线,而不是一个。