0

ボタンを動的に作成し、以下のようにプレースホルダーに配置します

<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;
        }
    }

@Darenuはこのような意味です...

4

6 に答える 6

1

プログラムでボタンを追加するため、イベントハンドラーを追加する必要があります。

だからこれはうまくいくでしょう..

編集 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)
    {
     // ...
    }

また、実行時にこれを生成しているので、これがポストバックでも呼び出されることを確認する必要があります。

于 2012-11-19T14:47:30.887 に答える
1

次のように変更button.OnClick = hello();します。

button.Click += new EventHandler(hello);

そして、の定義を次のように変更しますhello()

protected void hello(object sender, EventArgs e)
{
    Label1.Text = "heeellllllo";
}
于 2012-11-19T14:47:51.490 に答える
1

イベントはと呼ばれClickます。正しい署名を使用してイベントハンドラーを追加する必要があります。

button.Click += new EventHandler(hello);

署名は次のとおりです。

protected void hello(Object sender, EventArgs e)
{
    // ...
}

方法:コードを使用してイベントハンドラーを追加する

すべてのポストバックで動的コントロールを再作成する必要があることに注意してください。

于 2012-11-19T14:48:06.847 に答える
1

OnClick保護されたメソッドです。イベントを使用する必要がありますClick

button.Click += new EventHandler(Click);

public void hello(object sender, EventArgs e)
{
    Label1.Text = "heellllllllllo";
}

ちなみに、すべてのポストバックでコントロールを作成して追加してください。そうしないと、イベントが機能しません。

于 2012-11-19T14:47:03.770 に答える
0

実行結果を割り当てますhello()

割り当ててみてください:

button.OnClick = hello;

- 編集 -

明らかに、それはあなたのエラーを明確にしません。

代わりに、ハンドラーをイベントハンドラーに追加します。

button.Click += hello;
于 2012-11-19T14:46:47.783 に答える
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";
    }
于 2012-11-19T15:37:38.947 に答える