1

まず最初に... 私は 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 メソッドがヒットしません。

4

2 に答える 2

1

基本的に、UserControl から Web ページ (この userControl を含む) に ButtonClick イベントを渡す必要があります。これは、イベントのバブルアップとして知られています

ユーザー制御部分:

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>");
}
于 2013-08-11T05:38:43.980 に答える