我正在动态创建一个按钮并将其放在占位符中,如下所示
<asp:Button ID="generateTableSchema" runat="server" Text="Generate Table" OnClick="generate_Click" />
protected void generate_Click(object sender, EventArgs e)
{
Button button = new Button();
button.Text = "Generate Table";
button.ID = "generateTable";
button.OnClick = hello();
PlaceHolder1.Controls.Add(button);
}
但onclick事件未触发。
这是我得到的错误
System.Web.UI.WebControls.Button.OnClick(System.EventArgs)' is inaccessible due to its protection level
你好如下......
public void hello()
{
Label1.Text = "heellllllllllo";
}
这里有什么问题????
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
else
{
button.Click += ButtonClick;
}
}
@Daren你的意思是这样......
答案 0 :(得分:1)
OnClick
是受保护的方法。您应该使用事件Click
。
button.Click += new EventHandler(Click);
public void hello(object sender, EventArgs e)
{
Label1.Text = "heellllllllllo";
}
顺便说一句,确保在每次回发中创建并添加控件,否则事件将无效。
答案 1 :(得分:1)
因为您要添加按钮编程联盟,所以您必须添加事件处理程序。
所以这会有用..
修改强> 包含INSIDE Page_Load按钮
protected void Page_Load(object sender, EventArgs e)
{
Button button = new Button();
button.Text = "Generate Table";
button.ID = "generateTable";
button.Click += hello; /// THIS is the handler
PlaceHolder1.Controls.Add(button);
}
ButtonClick将是您方法的名称。
protected void hello(Object sender, EventArgs e)
{
// ...
}
另外,当你在运行时生成它时,你需要确保在回发时调用它。
答案 2 :(得分:1)
将button.OnClick = hello();
更改为:
button.Click += new EventHandler(hello);
并将hello()
的定义更改为:
protected void hello(object sender, EventArgs e)
{
Label1.Text = "heeellllllo";
}
答案 3 :(得分:1)
事件被调用Click
.您需要使用正确的签名添加事件处理程序:
button.Click += new EventHandler(hello);
并且签名是:
protected void hello(Object sender, EventArgs e)
{
// ...
}
How to: Add an Event Handler Using Code
请注意,您需要在每次回发时重新创建动态控件。
答案 4 :(得分:0)
您指定执行hello()
的结果。
尝试分配:
button.OnClick = hello;
- 编辑 -
显然,这并不能澄清你的错误。
将处理程序添加到事件处理程序中:
button.Click += hello;
答案 5 :(得分:0)
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
else if(Page.IsPostBack && Label11.Text=="yes")
{
Button button = new Button();
button.Text = "Generate Table";
button.ID = "generateTable";
button.Click += ButtonClick;
PlaceHolder1.Controls.Add(button);
}
}
设置
Label11.Text = "yes";
在generate_click。
protected void ButtonClick(object sender, EventArgs e)
{
Label1.Text = "heeellllllo";
}