2016-05-02 7 views
0

Ich habe ein benutzerdefiniertes Ereignis, das ich verwenden möchte, um ein zuvor ausgeblendetes Element auf meiner Seite anzuzeigen.Ich kann nichts in meinem benutzerdefinierten Ereignis tun

ASPX:

<%@ Register Src="~/Controls/EditSync.ascx" TagPrefix="IP" TagName="EditSync" %> 

<asp:Content ID="main" ContentPlaceHolderID="body" runat="server"> 

//Some unrelated controls 

    <fieldset id="fsEditPlugin" runat="server" class="inputForm" style="width:450px;" visible="false"> 
     <IP:EditSync id="ctlEditSync" runat="server" /> 
    </fieldset> 
</asp:Content> 

-Code hinter:

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.ctlDelivery.EditPlugin += new EventHandler(onEditPlugin); 
    if (!Page.IsPostBack) 
    { 
     //Some more unrelated things 
    } 
} 

public void onEditPlugin(object sender, EventArgs e) 
{ 
    System.Diagnostics.Debug.Write(((ip.Controls.EditPluginEventArgs)e).type); 
    fsEditPlugin.Visible = true; 
} 

die Debug-Meldung angezeigt wird. Ich kann Haltepunkte im Event-Handler platzieren und sie sind erreicht, aber egal was ich versuche, ich kann die Seite nicht von meinem Event-Handler manipulieren. Das fsEditPlugin ist kein Kind von etwas anderem, das versteckt ist. Einige Sachen, die ich versucht habe:

//I've tried this: 
<fieldset id="fsEditPlugin" runat="server" class="inputForm" style="width:450px; display:none;"> 
//code behind: 
fsEditPlugin.Style.Add("display", "inline"); 

//I've tried this: 
<fieldset id="fsEditPlugin" runat="server" class="inputForm" style="width:450px;"> 
</fieldset> 
//Code behind: 
fsEditPlugin.Controls.Add(new LiteralControl("TEST")); 

Nichts scheint zu arbeiten. In meinem Page_Load ist nichts vorhanden, das die Steuerelemente beeinträchtigen könnte.

Das Ereignis wird von einem anderen untergeordneten Webbenutzer-Steuerelement ausgelöst. Wenn ich also eine Taste in einem anderen untergeordneten Steuerelement des Web-Benutzers drücke, möchte ich das EditSync-Steuerelement sichtbar machen.

+0

Das ist nicht Ihr gesamter Code, denke ich, da Sie 'onEditPlugin' hier nie registrieren. Was ist "IP: EditSync"? –

+0

Wenn Sie den Standardwert von fsEditPlugin.Visible auf true setzen, können Sie es sehen oder können Sie es dann immer noch nicht sehen? –

+0

@PatrickHofman geben Sie mir eine Sekunde und ich werde mehr Code hinzufügen –

Antwort

0

Ok, also habe ich es endlich geschafft, das Problem zu beheben!

Das Problem war, dass meine Taste, die das Ereignis innerhalb eines Update-Panel war gefeuert:

<asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <IP:Delivery id="ctlDelivery" runat="server" /> <% /* this is a web user control */ %> 
    </ContentTemplate> 
</asp:UpdatePanel> 

Ich löse dies durch die folgende Zeile in die Page_Load von ctlDelivery Zugabe:

ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(btnEdit); //btnEdit is the button that fires my custom event. 

shoutout zu EvilDr und sein answer to another question

Verwandte Themen