| 

.NET C# Java Javascript Exception

1
Hi zusammen,
ich habe eine Page, auf der Page liegt ein UserControl (KundeDetails.ascx), auf diesem UserControl liegt ein ModalPopupExtender und ein Panel (ID=ModalPopupPanel) welches als PopupControlID im ModalpopupExtender gesetzt ist. Ein Event in KundeDetails.ascx.cs fügt dann dem ModalPopupPanel dynamisch ein UserControl hinzu (PersonDetails.ascx). Dieses UserControl verwaltet in sich per SaveButton das Speichern von Änderungen an den Personendaten.

Mein Problem ist nun, dass das SaveButton zwar das Modale Popup schliesst, danach aber kein Postback auf KundeDetails.ascx ausgeführt wird, was ich bräuchte um meine geänderten Daten hier zu aktualisieren.

Ich habe natürlich schon viel im Netz gesucht und schlussendlich bin ich jetzt nach dem Prinzip vorgegangen, welches in diesem Blog beschrieben wird:

https://lordfu.wordpress.com/2010/02/23/ajax-modalpopupextender-postback-and-web-user-controls/

Mein Problem ist, dass ich nicht verstehe, wie das Event im dynamisch erzeugten UserControl (PersonDetails) irgendwelche Methoden (im speziellen refreshData()) vom aufrufenden UserControl(KundeDetails) kennen und ausführen soll. Speziell der letzte Absatz im Blog erschliesst sich mir nicht:

protected void btnOK_Click(object sender, EventArgs e)
{
// Execute your server side code now that the buttons event signature can be found
}


Hier sind noch meine Methoden:
ModalPopupExtender in KundeDetails.ascx:
<asp:Button runat="server" ID="hiddenTargetControlForModalPopup" Style="display: none" />
<asp:ModalPopupExtender
runat="server"
ID="programmaticModalPopup"
BehaviorID="programmaticModalPopupBehavior"
TargetControlID="hiddenTargetControlForModalPopup"
PopupControlID="ModalPopupPanel"
BackgroundCssClass="modalBackground"
PopupDragHandleControlID="programmaticPopupDragHandle"
RepositionMode="RepositionOnWindowScroll"
DropShadow="True" Drag="True"
>
</asp:ModalPopupExtender>

<asp:Panel ID="ModalPopupPanel" runat="server">
</asp:Panel>


KundeDetails.ascx.cs:

protected override void OnInit(EventArgs e)
{
if (HttpContext.Current.Session["PersonDetailsControl"] != null)
{
Dictionary<string, object> paramObj = new Dictionary<string, object>();
paramObj["PersonId"] = (object)HttpContext.Current.Session["PersonDetailsControl"].ToString();
createPersonPopup(paramObj);
}
}

protected void EditPerson(object sender, CommandEventArgs e)
{
ImageButton btn = (ImageButton)sender;
GridViewRow row = (GridViewRow)btn.NamingContainer;

Dictionary<string, object> paramObj = new Dictionary<string, object>();
paramObj["PersonId"] = (object)grdPersonen.DataKeys[row.DataItemIndex].Value.ToString();
hiddenFieldPersonId.Value = grdPersonen.DataKeys[row.DataItemIndex].Value.ToString();
createPersonPopup(paramObj);
}

protected void createPersonPopup(Dictionary<string, object> paramObj = null)
{
UserControl modalContent = new UserControl();
modalContent = (UserControl)LoadControl("PersonDetails.ascx");
modalContent.ID = "modalControlID";
ModalPopupPanel.Controls.Clear();
ModalPopupPanel.Controls.Add(modalContent);
((IPerson)modalContent).getPerson(paramObj);

HttpContext.Current.Session["PersonDetailsControl"] = paramObj["PersonId"].ToString();

programmaticModalPopup.Show();
}


PersonDetails.ascx.cs:
protected void btnSavePersonenDetails_Click(object sender, EventArgs e)
{
HttpContext.Current.Session["PersonDetailsControl"] = null;
personcontroller.savePerson();
}


Danke für die Zeit ;-)
News:
10.07.2012
Sweatdiver 126 6
TOP TECHNOLOGIES CONSULTING GmbH