3

ユーザーコントロールからaspxページへメソッドを呼び出したい

試していますが、aspxページでそのメソッドを呼び出すことができません

コード:

AddVisaUserControl.ascx.cs

public event EventHandler UserControlButtonClicked;

    public void OnUserControlButtonClick()
    {
        if (UserControlButtonClicked != null)
        {
            UserControlButtonClicked(this,EventArgs.Empty);
        }
    }

protected void btnRemove_Click(object sender, EventArgs e)
    {
        OnUserControlButtonClick();
    }

.aspx

編集

以下のコードでは、ページの読み込み時に「null 参照エラー」が発生しています

AddVisaControl av; 
protected void Page_Load(object sender, EventArgs e)
    {
        av.UserControlButtonClicked  += new
                EventHandler(AddVisaUserControl_UserControlButtonClicked);
    } 

  private void AddVisaControl_UserControlButtonClicked(object sender, EventArgs e)
    {
        var ctrl = (AddVisaControl)LoadControl(@"AddVisaControl.ascx");
        //ctrl.ID = i;
        this.rpt1.Controls.Remove(ctrl);
    }

何か案は?前もって感謝します

4

4 に答える 4

1

あなたの ascx コントロール

public delegate void ButtonClickEventHandler(string data);
public event ButtonClickEventHandler ButtonClickEvent = null;

if (ButtonClickEvent != null)
            ButtonClickEvent("Send to aspx");

あなたのaspxページ:

<%@ Register TagPrefix="uc" TagName="uc1" 
             Src="~/Controls/AddVisaUserControl.ascx" %>
<uc:AddVisaControl id="uc1" runat="server" />


 protected void Page_Load(object sender, EventArgs e)
    {
        uc1.ButtonClickEvent += new yourusercontrol.ButtonClickEventHandler(Login1_ButtonClickEvent);
    }

    void uc1_ButtonClickEvent(string data)
    {
        lbldefaultaspx.Text = data.ToString();
    }
于 2013-09-26T13:32:09.297 に答える
1

初期化されていないフィールドがあるようです:

AddVisaControl av; 

そのデフォルト値は null であるため、NullReferenceException です。

UserControl のインスタンスを aspx ページに追加した場合は、UserControl インスタンスの ID と同じ名前のインスタンスが必要です。

=== で Page.aspx

<uc1:AddVisaUserControl ID="MyControl" ... />

=== で Page.aspx.cs

MyControl.UserControlButtonClicked += ...
于 2013-09-26T11:52:11.430 に答える