点击asp.net中的按钮

时间:2012-11-19 14:42:30

标签: asp.net

我正在动态创建一个按钮并将其放在占位符中,如下所示

<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你的意思是这样......

6 个答案:

答案 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";
    }