0

空白のユーザー コントロール (子) があり、Page_Load 中にいくつかのテキスト ボックスとボタンを作成します。また、ボタンにイベントを追加します。

次に、そのユーザー コントロールを別のユーザー コントロール (親) のプレースホルダーから動的に読み込みます。両方のコントロールが正しくレンダリングされますが、ボタンをクリックするとイベントが発生しません。イベントの処理方法に関するアイデアはありますか?

子コード:

 protected void Page_Load(object sender, EventArgs e)
{    
    /*... other user controls ..*/
    UpdateButton = new LinkButton();
    UpdateButton.ID = "buttonid";
    UpdateButton.Text = "text";
    UpdateButton.Click += new EventHandler(UpdateButton_Click);
    this.Controls.Add(UpdateButton);
}

protected override void Render(HtmlTextWriter writer)
{
    for (int i = 0; i < this.Controls.Count; i++)
    {
        this.Controls[i].RenderControl(writer);
    }
}

public void UpdateButton_Click(object sender, EventArgs e)
{
    //Do stuff
}

親コード:

protected void Page_Load(object sender, EventArgs e)
{    
    placeholder.Controls.Clear();
    ChildControl uc = (ChildControl)LoadControl("~/UserControls/ChildControl.ascx");
    placeholder.Controls.Add(uc);
}

子コントロールを直接使用すると (つまり、親コントロールなしで) クリック イベントが発生し、適切に処理されます。しかし、親コントロールを使用すると、デバッガーは UpdateButton_Click() 内のブレークポイントにさえヒットしません。

前もって感謝します。

4

1 に答える 1

0

私は何が起こっているのか知っていると思います。親 Page_Load で呼び出しplaceholder.Controls.Clear();ていますこれは、発生したイベントを含め、想像したとおりにコントロールをクリアします。この行を削除するとどうなりますか? ポストバックごとに追加で作成されますか?

于 2010-07-31T18:19:41.267 に答える