martedì 12 maggio 2015

Ext.net DirectMethod and UserControl C#

Utilizzando il framework Ext.Net, può capitare la necessità di dover utilizzare a runtime (per esempio in una confirm) un metodo tramite la sintassi DirectMethod.

Se il metodo da richiamare si trova in un controllo ascx, o meglio usercontrol utilizzato come finestra modale, il metodo non verrà eseguita, generando un errore a run time.

Qui di seguito come risolvere tale problematica ed eseguire in un user controllo il method.

Pagina Aspx.

Nella pagina aspx, che richiama l'user control, dobbiamo impostare la proprietà DirectMethodNamespace del controllo ResourceManager con un valore che utilizzeremo nel controllo.

Qui di seguito un esempio
<

ext:ResourceManager ID="ResourceManager1" runat="server" DirectMethodNamespace="MyNameSpace"

>

Pagine UserControl

Nella pagina usercontrol, che verrà utilizzata come finestra modale, dobbiamo creare il metodo di tipo DirectMethod.

Qui di seguito un esempio tramite il linguaggio C#

 [DirectMethod(Namespace = "MyNameSpace")]
    public void MioMetodo()
    {

}


 Da notare che l'attributo DirectMethod ha la proprietà namespace impostata con il valore presente nella proprietà DirectMethodNamespace della pagina aspx.

Impostare il valore.

Se vogliamo utilizzare il metodo in una finestra Confirm, dobbiamo impostare nella proprietà handler tale metodo, seguito dallo spazio dei nomi e della parola chiave "DirectMethods).

Qui di seguito un esempio di codice




 X.Msg.Confirm("Titolo",
           "Testo del messaggio", new MessageBoxButtonsConfig
           {

               Yes = new MessageBoxButtonConfig
               {
                 
                   Handler = "#{DirectMethods}.MyNameSpace.MioMetodo();",

                   Text = "Si"
               },
               No = new MessageBoxButtonConfig
               {
                   Text = "No"
               }
           }).Show();

Nessun commento: