none
ascx in einem Updatepanel aktualisieren RRS feed

  • Allgemeine Diskussion

  • Hi,

    Ich habe ein registriertes ascx (Prefix uc1, Tagname MyHeader) und ein Gridview in einem Updatepanel (UPanel1).
    Wenn ich nun auf ein Row im Gridview klicke (SelectionChanged), möchte ich dass sich das ascx MyHeader aktualisiert.

    Wie kann ich das im Codebehind lösen?
    Wie "refreshe" ich das ascx Control im Updatepanel?

    Gruss und Dank
    Philippe

    Montag, 19. März 2012 16:04

Alle Antworten

  • Du kannst dem UpdatePanel Steuerelemente als Trigger zuweisen und das Ereignis auswählen welches das Updaten auslösen soll.

    z.b.

     <asp:UpdatePanel ID="UPanel1" runat="server">
                    <ContentTemplate>
                            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
                    </Triggers>
                </asp:UpdatePanel>

    Du kannst das UpdatePanel aber auch "zu Fuß" updaten mit der Methode, die passenderweise, Update heisst.

    UPanel1.Update();

    mfg

    Shmoo


    • Bearbeitet Lennart F Dienstag, 20. März 2012 12:11 Beispiel dran geknetet
    Dienstag, 20. März 2012 12:08
  • Hi Robert

    Sorry, bin noch nicht dazu gekommen das zu testen.

    Aber ich werde mich melden.

    Gruss und Dank
    Philippe

    Sonntag, 25. März 2012 02:13
  • Habe vieles versucht, geht nicht.

    Habe den Header in ein eigenes Updatepanel gesetzt. Trotz dass ich die Eigenschaft childrenastriggers="False" gesetzt habe, wird dieser beim Klick auf das GridviewRow im anderen Updatepanel ausgelöst und das FMUP_HeaderWoman.Update() wird serverseitig im (row)SelectionChanged nicht ausgelöst. Die Trigger-Version alleine geht auch nicht bzw. der Ablauf der Events ist für mich nicht geeignet, da dieser vor dem SelectionChanged ausgelöst wird.
    Die Webseite liegt in einem iFrame, welches im Dotnetnuke-Portal eingebettet ist. Dem iFrame sollte es meines Wissens egal sein, ob Ajax Funktionen über ihm, also im Dotnetnuke, aktiviert sind oder nicht.
    Kurz, ich weiss nicht wieso das FMUP_HeaderWoman.Update() nicht ausgelöst wird.
    Hast du noch eine Idee? Gruss und Dank.

    Hier mein Code gekürzt:
    <Form id="FM_FORM" runat="server">
    <asp:scriptmanager id="ScriptManager1" runat="server" EnablePartialRendering="True"></asp:scriptmanager>
    <asp:updatepanel id="FMUP_HeaderWoman" runat="server" updatemode="Conditional" childrenastriggers="False">
    <ContentTemplate>
      <uc1:HeaderWoman ID="FM_HeaderWoman" runat="server" />
    </ContentTemplate>
    </asp:updatepanel>
    <asp:updatepanel id="FMUP_Gridview" runat="server">
    <ContentTemplate>
       <dx:ASPxGridView ID="FM_GridViewTMI01_Persons" runat="server" AutoGenerateColumns="False"
    DataSourceID="FMSQL_TMI01_Persons" EnableCallBacks="False" KeyFieldName="PID" Width="100%">
    <Columns>
    '......
    </Columns>
    </dx:ASPxGridView>
    </ContentTemplate>
    <
    /asp:updatepanel>
    <
    asp:updateprogress id="UpdateProgress1" runat="server" associatedupdatepanelid="FMUP_Gridview"
    displayafter="1">
    <ProgressTemplate>Load</ProgressTemplate>
    </asp:updateprogress>
    </form>

    Serverseitig:

    ProtectedSubFM_GridViewTMI01_Persons_SelectionChanged(ByValsender AsObject, ByVale AsSystem.EventArgs) HandlesFM_GridViewTMI01_Persons.SelectionChanged
    'SaveCurrentClickedData......
    FMUP_HeaderWoman.Update()
    EndSub

    Montag, 26. März 2012 12:21
  •  

    ich bin mir nicht ganz sicher wann genau du das Update aufrufen möchtest, also was passieren soll damit es ausgelöst wird.
    "Die Trigger-Version alleine geht auch nicht bzw. der Ablauf der Events ist für mich nicht geeignet, da dieser vor dem SelectionChanged ausgelöst wird."
    möchtest du was bevor SelectedIndexChanged aufrufen?
    dafür gibt es die SelectedIndexChanging Methode. In dieser Methode könntest du das Speichern (wie in deinem Beispiel) erledigen und das UpdatePanel mit dem Event SelectedIndexChanged aktualisieren lassen, denn da sollte er mit dem speichern fertig sein.



    void CustomersGridView_SelectedIndexChanging(Object sender, GridViewSelectEventArgs e)
      {
        GridViewRow row = CustomersGridView.Rows[e.NewSelectedIndex];
        SaveMethode(row);

      }



    <Triggers>
             <asp:AsyncPostBackTrigger ControlID="FM_GridViewTMI01_Persons" EventName="SelectedIndexChanged" />
      </Triggers>

    Bin mir allerdings nicht sicher ob ich nicht gerade was übersehe bzw. verpeile.


    Montag, 26. März 2012 16:04
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************

    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 4. April 2012 08:34
    Moderator