Sapere quando siamo in AsyncPostBack

by Andrea 28 March 2007 20:03

A volte le cose sono più semplici del previsto. Fino ad ieri quando usavo ASP .NET Ajax, mi limatavo a controllare solamente che la pagina fosse in PostBack (Page.IsPostBack) per compiere determinate azioni

protected void Page_Load(object sender, EventArgs e)
{
	if (!Page.IsPostBack)
	{
		...
	}
}

e non ero a coonoscenza che ci è stata messa a disposizione una proprietà che ci permette di conoscere quando ci troviamo in un AsyncPostBack, e questa proprietà si trova nello ScriptManager (IsInAsyncPostBack).
Il vantaggio ora è che si possono separare le azioni da compiere (ad esempio al caricamento di una pagina).

protected void Page_Load(object sender, EventArgs e)
{
	if (!Page.IsPostBack)
	{
		// eseguo un'azione al primo caricamento della pagina
	}

	if (ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack)
	{ 
		// eseguo un'azione quando sono in un AsyncPostBack
	}
}

Technorati tags: ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ajax ASP.NET

Aggiornato il codice del JSAsyncPostBackTrigger

by Andrea 28 March 2007 00:03

Sono riuscito a risolvere il problema del trigger, che non poteva essere aggiunto dinamicamente durante un PostBack, e questo mi rende felice perchè non era un problema da poco. smile_party

Ho aggiornato i file in download , e li trovate nel solito post:
UpdatePanel e trigger su evento JavaScript - JSAsyncPostBackTrigger

Buon divertimento

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ajax ASP.NET

Microsoft ha acquisito DevBiz Business Solutions

by Andrea 27 March 2007 03:03

Microsodt ha acquisito la DevBiz Business Solution, conosciuta per il famoso TeamPlain. Per chi non lo conosce, è uno strumento che fornisce un'interfaccia web a Team Foundation Server.

Come si legge nel post di Brian Harry

Today we are announcing that Microsoft has acquired DevBiz Business Solutions, the makers of the popular TeamPlain Web Access for Team System.  TeamPlain is a web front end for VSTS that enables users to access the majority of TFS functionality from within a Web browser.

E la parte più interessante è che ora è disponibile senza costi aggiuntivi per chi disponi delle cal di Team Fuondation server:

TeamPlain will become Microsoft Visual Studio Team System Web Access.  Effective today, TeamPlain is available, at no additional charge, to users who own a Team Foundation Server and can be downloaded from here.  It will be accessible by any user properly licensed with a TFS CAL.

Devo ammettere che era uno strumento che proprio mancava.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

.NET

UpdatePanel e trigger su evento JavaScript - JSAsyncPostBackTrigger

by Andrea 26 March 2007 22:03

Come accennavo nel post precedente, a volte capita di voler aggiornare il contenuto di un UpdatePanel tramite un evento JavaScript. Il non poter fare questa cosa un pò mi rodeva, e allora ho cercato una soluzione e, applicando alcuni workaround, sono riuscito a creare un tipo di trigger per l'UpdatePanel che fa scatenare l'update agganciandosi ad un preciso evento JavaScript.

Come usarlo:
Questo trigger va aggiunto alla collezione dei trigger come lo si fa per i due tipi di trigger esistenti (AsyncPostBackTrigger, PostBackTrigger ):

[...]
    </ContentTemplate>
     <Triggers>
         <asp:JSAsyncPostBackTrigger
                 ControlID="txtText"
                 EventName="keyup"
                 ClientFunction="validation" />
         <asp:JSAsyncPostBackTrigger
                 ControlID="txtText"
                 EventName="change" />
     </Triggers>
 </asp:UpdatePanel>
Nel trigger vanno specificati, l'ID del controllo (ControlID) che scatena l'evento, il nome dell'evento JavaScript (EventName) che farà scatenare l'Update, e facoltativamente, il nome di una funzione JavaScript per la validazione (ClientFunction) che ho visto che spesso può tornare utile. Quest'ultima può valutare se far scatenare o no il trigger, e per fare ciò è sufficiente impostare un flag (args.IsValid) a true per fare scatenare l'update, o a false per annullare il trigger. Questa funzione può essere usata anche per eseguire del codice JavaScript prima dell'update del UpdatePanel. 
Eccone un esempio:
function validation(args) {
    if (($get('txtText').value.length % 3) == 0)
    {
        args.IsValid = true;
    }
    else
     {
        args.IsValid = false;
    }
}

Per poter usare il tutto, si deve referenziare la dll ed il trigger va registrato nella pagina nel seguente modo:
<%@ Register Assembly="XeDotNet.Dottor.Web.UI" Namespace="XeDotNet.Dottor.Web.UI" TagPrefix="asp" %>
oppure nel Web.Cofig all'interno del blocco pages:
<add Register Assembly="XeDotNet.Dottor.Web.UI" Namespace="XeDotNet.Dottor.Web.UI" TagPrefix="asp" />

Problemi conosciuti:
Questo tipo di trigger è ancora allo stato embrionale, infatti al momento ha il difetto di non poter venire aggiunto dinamicamente durante un PostBack, ma conto di risolvere questo punto al più presto. (UPDATE del 27.03.2007 - problema risolto) Attenzione a quali eventi agganciate al trigger per evitare un numero tropppo elevato di PostBack.

Compatibilità:
Il trigger dovrebbe essere cross-browser in quanto fa uso della ASP .NET AJAX library (che è cross-browser).

Download:
(ultimo aggiornamento dei file in download: 30.03.2007) Ecco il link per il download della dll ed ecco il link con il download del codice sorgente ed un esempio d'uso.

Feedback:
Vi chiedo solamente di lasciare un vostro commento/impressione per avere alcuni feedback e sapere se approfondire il trigger in questione (e se può servire realmente a qualcuno all'infuori di me).

Thanks smile_wink

Technorati tags: , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ajax ASP.NET

ASP .NET AJAX e i tipi di trigger dell'UpdatePanel

by Andrea 26 March 2007 17:03

Per chi usa con una certa costanza ASP .NET AJAX, e più in dettaglio l'UpdatePanel, credo senta la mancanza di alcuni trigger.

I trigger presenti ad oggi sono due, l'AsyncPostBackTrigger e il PostBackTrigger.
Il primo (AsyncPostBackTrigger) permette di aggiornare il contenuto dell'UpdatePanel specificando il controllo e l'evento che causerà questo trigger. Il controllo può essere sia tra quelli contenuti all'interno dell'UpdatePanel, che tra quelli esterni.
Il PostBackTrigger permette di specificare un controllo interno all'UpdatePanel che causerà un postback della pagina.

Questi trigger coprono la maggior parte dei casi, ma alcune volte ci si presenta la necessità di dover aggiornare il contenuto di un UpdatePanel via Javascript...

...al prossimo post per una possibile soluzione... smile_teeth

Technorati tags: , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ajax ASP.NET

ASP .NET AJAX e registrazione javascript

by Andrea 23 March 2007 09:03
Nel normale uso di ASP .NET AJAX, usando gli UpdatePanel può capitare di dover iniettare uno script magari dopo un postback, e la cosa che viene naturale è di usare il solito Page.ClientScript: this.Page.ClientScript.RegisterStartupScript(...); ma noterete che non funzionerà (e non genererà nemmeno un errore) perchè lo script viene iniettato in un punto della pagina esterno all'UpdatePanel e quindi non verrà eseguito perchè verrà aggiornato solo il contenuto dell'UpdatePanel. In questo caso, si devono iniettare gli script passando per lo ScriptManager inserito nella pagina e registrando gli script nel seguente modo: ScriptManager.RegisterStartupScript(....); E' certamente una cosa banale, ma per chi è alle prime armi con ASP .NET AJAX sicuramente farà perdere un pò di tempo. smile_wink A questo link della documentazione troverete maggiori info a riguardo.

Technorati tags: , , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ajax ASP.NET

BarCamp nel Veneto

by Andrea 23 March 2007 06:03

Leggo del VenetoCamp da Jazzer e anch'io do una mano nel spargere la voce.... il 14 maggio 2007 presso il Parco Scientifico Tecnologico di Venezia a Marghera si terrà un BarCamp.

Ma che cos'è un BarCamp?
Wikipedia a questo link http://it.wikipedia.org/wiki/BarCamp riporta questa definizione:

BarCamp è una rete internazionale di non conferenze aperte i cui contenuti sono proposti dai partecipanti stessi. Gli eventi si occupano soprattutto di temi legati alle innovazioni sull'uso del World Wide Web, del software libero e delle reti sociali.

La cosa sembra interessante. Ne avevo già sentito parlare ma non ho mai avuto occasione di parterciparci....staremo a vedere.
Per chi fosse interessato, ecco dove potersi registrare.

Technorati tags:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Internet

ASP .NET AJAX e validazione di controlli aggiunti in un postback

by Andrea 22 March 2007 07:03

Se avete provato a validare controlli inseriti in un postback all'interno di un UpdatePanel, vi sarete accorti che la cosa non funziona e nemmeno genera errori.
La storia è semplice, l'UpdatePanel renderizza solamente il suo contenuto e non aggiorna le altre pagine della pagina, che nel caso dei validatori avrebbero contenuto degli script per agganciare il validatore al controllo.
Matt Gibbs, che fa parte del team di sviluppo di ASP .NET AJAX ci è venuto in contro e ha modificato il codice dei validatori facendo si che gli script necessari venissero registrati nella pagina tramite lo ScriptManager.
A questo link trovate un suo post sull'argomento e sono disponibili i sorgenti dei validatori modificati e pronti per il download.

Per sostituire i validatori, è sufficente referenziare la dll contenente i validatori modificati ed aggiungere nella sezione pages del Web.config questa sezione tagMapping:

<tagMapping>
    <add tagType="System.Web.UI.WebControls.CompareValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.CompareValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.CustomValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.CustomValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.RangeValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.RangeValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.RegularExpressionValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.RegularExpressionValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.RequiredFieldValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.RequiredFieldValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.ValidationSummary"
        mappedTagType=" Sample.Web.UI.Compatibility.ValidationSummary, Validators, Version=1.0.0.0"/>
</tagMapping>

In questo modo, i validatori dichiarati come <asp:CompareValidator .../> e gli altri, saranno ridirezionati nel nuovo namespace (nell'assembly appena aggiunto).
Occhi quando vi trovate nel codebehind al namespace che state usando, controllate di puntare effettivamente alla nuova dll.

E tutto questo vale per:

  • CompareValidator
  • CustomValidator
  • RangeValidator
  • RegularExpressionValidator
  • RequiredFieldValidator
  • ValidationSummary

Devo ammettere che ha fatto proprio un buon lavoro, e gli faccio i miei complimenti perchè sarebbe stata una grave mancanza non avere la validazioni in controlli aggiunti dinamicamente in un postback.

Technorati tags: ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ajax ASP.NET

AJAX Control Toolkit - ConfirmButtonExtender in una colonna di cancellazione

by Andrea 21 March 2007 22:03
Queste sono le cose che mi piacciono, quando con poche righe di codice si risolve immediatamente un problema. Infatti con una riga di markup è possibile aggiungere ad un button una messagebox di conferma, che io utilizzo (ad esempio) quando devo eseguire delle cancellazioni, e tutto grazie al ConfirmButtonExtender. (così non serve neanche che conosca i javascript smile_wink) In questo esempio, ho usato il ConfirmButtonExtender in una colonna di cancellazione creamdomi un colonna con un TemplateField.
<asp:TemplateField > 
   <ItemTemplate> 
        <asp:LinkButton 
            CommandName="delete" 
            runat="server" 
            ID="deleteRecord" 
            Text="delete" /> 
        <ajaxControlToolkit:ConfirmButtonExtender 
            ID="bDeleteExtender" 
            runat="server"
            TargetControlID="deleteRecord" 
            ConfirmText="Sicuro di voler cancellare?" /> 
   </ItemTemplate> 
</asp:TemplateField>
 Bello, semplice e funziona smile_party

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Ajax ASP.NET

Design Templates

by Andrea 20 March 2007 22:03
In questo post, Davide Vernole ha indicato un link da dover poter scaricare dal sito Microsoft alcuni starter kits realizzati in XHTML Strict. Il link aggiornato per il download è il seguente Design Templates. Così, per chi volesse farsi un sitarello proprio, ha già una buona base di partenze e sicuramente risparmierebbe un bel pò di tempo. smile_wink

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

.NET | Internet