Gewusst wie: aufrufen einer Methode aus dem user-control, um aspx-Seite?
Ich möchte eine Methode aufrufen von Benutzer-Steuerelement, um aspx-Seite
Ich versuche aber ich bin nicht in der Lage ist zu nennen, dass die Methode in der aspx-Seite
Code:
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
Bearbeiten
In den folgenden code beim laden der Seite bin ich immer "null Fehler"
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);
}
Irgendwelche Ideen? Vielen Dank im Voraus
Sieht ok für mich, ist es einfach nicht feuern? Was ist der header für AddVisaUserControl_UserControlButtonclicked?
Vielen Dank für Ihre Antwort, siehe meine editierte Frage
Haben Sie tatsächlich Hinzugefügt, die Kontrolle auf die aspx-Datei? Man kann nicht einfach deklarieren, wie es das. Zum einen, es werden nicht initialisiert, daher ist die null-Referenz.
Vielen Dank für Ihre Antwort, siehe meine editierte Frage
Haben Sie tatsächlich Hinzugefügt, die Kontrolle auf die aspx-Datei? Man kann nicht einfach deklarieren, wie es das. Zum einen, es werden nicht initialisiert, daher ist die null-Referenz.
InformationsquelleAutor user2500094 | 2013-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend haben Sie ein nicht initialisiertes Feld:
dessen Standardwert ist null, daher der NullReferenceException.
Wenn Sie Hinzugefügt haben, müssen Sie eine Instanz des Benutzersteuerelements auf Ihrer aspx-Seite haben, sollten Sie auf eine Instanz, deren name gleich dem ID des UserControl-Instanz:
=== in der Seite.aspx
=== in der Seite.aspx.cs
Es funktioniert sehr gut, danke
InformationsquelleAutor Joe
Ihre ascx-control
Ihrer aspx-Seite :
InformationsquelleAutor
Die Sie erstellt haben, die Delegierten über die
+= new
syntax, aber nicht die eigentliche Methode, die aufgerufen wird in Ihre Seite ein code.In anderen Worten, müssen Sie eine
AddVisaUserControl_UserControlButtonClicked
Methode in Ihr .aspx-Seite code, wie folgt aus:UPDATE:
Auf dem OP-posting mehr code, es scheint, die user-Kontrolle einen null-Verweis, wegen dieser Zeile:
Diese nicht instanziieren, die dem Benutzer die Kontrolle, so können Sie zwei Dinge tun:
Instanziieren, die der Benutzer kontrollieren, wie diese:
Invoke des Delegaten, wie diese:
Fügen Sie das Benutzersteuerelement, um das markup der Seite, wie diese:
Invoke des Delegaten, wie diese:
aktualisierte Antwort.
Option (1) oben (instanziieren der Benutzer control) macht nicht viel Sinn: es gibt keinen Punkt in der Instantiierung eines Benutzers Steuern, es sei denn, Sie fügen Sie es an die Steuerung Baum.
Ich Stimme zu, nur zu sagen, technisch wäre es lindern die null-Referenz-Problem.
InformationsquelleAutor Karl Anderson
Usercontrol.ascx
ParentPage.aspx
InformationsquelleAutor Mahesh