Resumé

Trigger di un UpdatePanel con Codice Client Side

Cristian Merighi () 0,00

il ClientAsyncPostBackTrigger è una semplice estensione di UpdatePanelControlTrigger che permette di forzare il trigger di un UpdatePanel ASP.NET AJAX utilizzando solo codice client-side (javascript).
Questo articolo è da considerarsi obsoleto. Alcune funzionalità potrebbero non essere più disponibili e non è possibile aggiungere commenti.

Penso che questo articolo risulterà utile a parecchi: tratta del triggering di un UpdatePanel utilizzando codice client-side (javascript); nessun controllo da utilizzare come appoggio, solo pure codice javascript per lo sviluppatore!

Ho "esteso" la classe System.Web.UI.UpdatePanelControlTrigger, appartenente al package ASP.NET AJAX 1.0, in una maniera... come dire... tricky.
Il nocciolo della questione è presto sviscerato: quello che ho fatto è stato aggiungere a runtime un'istanza di un oggetto Button (non visibile) e intercettarne il postback; postback a sua volta forzato lato javascript.

class diagram

Il seguente codice mostra come utilizzare il custom trigger nel markup di una pagina ASP.NET:

<!-- CLIENT SIDE CODE -->
<asp:ScriptManager runat="server" ID="sm" EnablePartialRendering="true">
</asp:ScriptManager>

<asp:UpdatePanel runat="server" ID="upd" UpdateMode="Conditional">
    <Triggers>
        <pacem:ClientAsyncPostBackTrigger ClientTriggerFunction="doTrigger"  />
    </Triggers>
    <ContentTemplate>
        
        [<asp:Label runat="server" ID="lbl" />]
    
    </ContentTemplate>
</asp:UpdatePanel>

<asp:HiddenField runat="server" ID="hid" />

<script type="text/javascript">
//<![CDATA[
    var iter = 0;
    
    function preTrigger(v){
        iter += v;
        $get("<%=hid.ClientID %>").value = iter;
        doTrigger();
    }
//]]>
</script>

<a href="javascript:preTrigger(1);">click to trigger up!</a>
|
<a href="javascript:preTrigger(-1);">click to trigger down!</a>

...ecco di seguito il - banale - codice utilizzato server-side:

<!-- SERVER SIDE CODE -->
void Page_Load(object o, EventArgs e)
{
    if (IsPostBack) lbl.Text = "postback response: " + hid.Value.ToString();
}

Giusto uno screenshot a testimonianza del corretto funzionamento:

screenshot

Il codice del custom UpdatePanelControlTrigger è scaricabile dal lnk sottostante.

zip file « download code

Take care. Bye.

Feedbacks

  • Re: Trigger UpdatePanel via Client Side Javascript

    Luca giovedì 8 novembre 2007 0,00

    L'idea è molto buona, ma se non sbaglio la routine Inizialize() di cui tu fai l'override è dichiarata Protected Friend nella classe UpdatePanelTrigger, quindi non viene mai eseguita!

  • Re: Trigger UpdatePanel via Client Side Javascript

    CMerighi giovedì 8 novembre 2007 0,00

    ...Sbagli. ;) Contrariamente a quanto molti pensano, Protected Friend (o protected internal in C#) non significa Protected <del>AND</del> Friend bensì Protected <b>OR</b> Friend! Percui il membro così marchiato è visibile <b>SIA</b> da parte delle classi che sono impacchettate nello stesso assembly (guarda infatti come <i>Initialize()</i> viene richiamato nel metodo <i>InsertItem</i> della classe <i>UpdatePanelTriggerCollection</i>) <b>SIA</b> da parte delle classi che ereditano dall'oggetto che contiene tale membro...

feedback
 

Syndicate

Autore

Cristian Merighi facebook twitter google+ youtube

Ultimi articoli

Top rated

Archivio

Dove sono?

Autore

Cristian Merighi facebook twitter google+ youtube

Le mie letture

Feeds