397 messaggi dal 10 ottobre 2002
Ciao Marco, x dirti che ho provato e funziona benissimo !!
grazie davvero !!!

Volevo chiederti visto che nn uso C# ma vb
se using è lequivalente di imports in vb
infine a cosa servono queste righe:

[DefaultProperty("Text"), 
ToolboxData("<{0}:WebCustomControl2 runat=server></{0}:WebCustomControl2>")] 


Grazie ancora e buon w.e...con Halo...
di niente speriamo di fare più bella figura stasera quando rigiocherò :)

si using ed import solo parenti :) quello tra parentesi quadre sono attributi, in questo caso servono al VS per sapere quale è la proprieta predefinta , ToolboxData viene utilizzato per creare i tag quando dalla toolbox trascini il controllo sulla pagina aspx.


ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
397 messaggi dal 10 ottobre 2002
Ciao Marco, scusa ma ti scrivo xchè sono nelle panne...

insomma ho provato con :

if (Request.Form.Get(myControl.ClientID) != null ).....



...per controllare l'oggetto che scatena il postback, ma mi crea troppo problemi di gestione, ricordo che tu in quelche post precedente mi hai detto che con un po' di codice si potrebbe generare un evento lato server, che secondo me sarebbe proprio l'ideale, ti chiedo, se ne hai voglia, ma come si fa, tu nn hai qualche esempio da propormi x generare un evento lato server da javascript..

ti ringrazio di nuovo
massimo
nessun problema, è una cosa che volevo fare :) stasera dovrei avere del tempo :)

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
397 messaggi dal 10 ottobre 2002
Quando puoi ti ringrazio !

Massimo
eccomi quà, allora prima di tutto facciamo una piccola modifca alla classe e implementiamo l'interfaccia IPostBackEventHandler:

public class WebCustomControl2 : System.Web.UI.WebControls.TextBox,IPostBackEventHandler
  {..}


fermo restando il codice che abbiamo già scritto aggiungiamo un delegato, che fornisce il prototipo del metodo che verrà richiamato dal gestore d'evento, un evento, ed infine il metodo responsabile di scatenare l'evento

public  delegate  void MaxLengthEventHandler(object sender, EventArgs e);

    public event MaxLengthEventHandler MaxLengthEvent;
    
    protected virtual void OnMaxLengthEvent(EventArgs e)
    {
      if(MaxLengthEvent != null)
      {
        MaxLengthEvent(this,e);
      }
    }
    void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
    {
      OnMaxLengthEvent(EventArgs.Empty);
    }


dovrebbe essere tutto :)

se ci sono dei problemi non esitare ciao marco
Modificato da nostromo il 18 gennaio 2005 09.18 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
397 messaggi dal 10 ottobre 2002
Ti ringrazio marco,
ho ultimi dubbi, se sopporti...
- che cos'è un delegato ?

- riepilogando se ho capito bene il controllo textbox personalizzato che determina il postback, acquisisce l'evento postback, e tranuite il metodo (OnMaxLengthEvent)

void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) 
{ 
OnMaxLengthEvent(EventArgs.Empty); 
}


viene scatenato l'evento MaxLengthEvent sul server,
ma il mio codice personalizzato alla fine lo devo mettere qui ?:
if(MaxLengthEvent != null) 
{ 
MaxLengthEvent(this,e); 

.. codice personalizzato ricerca dati DB 
} 



grazie Massimo
un delegato è un puntatore ad un metodo ne più e ne meno :) viene usato per determinare in fase di esecuzione il metodo da richiamare

per gesire l'evento usi la classica sintassi che usi per gli altri

il codice completo della nuova textbox è questo non devi aggiungere altro :)

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;

namespace AspItalia.WebControls
{
  /// <summary>
  /// Descrizione di riepilogo per WebCustomControl2.
  /// </summary>
  [DefaultProperty("Text"), 
    ToolboxData("<{0}:WebCustomControl2 runat=server></{0}:WebCustomControl2>")]
  public class WebCustomControl2 : System.Web.UI.WebControls.TextBox,IPostBackEventHandler
  {
    public WebCustomControl2(){}
    protected override void OnLoad(EventArgs e)
    {
      base.OnLoad (e);
      StringBuilder mySB = new StringBuilder(180);
      mySB.Append("<script type=\"text/javascript\">");
      mySB.Append("function ValutaLunghezza(elmnt,content)");
      mySB.Append("{if (content.length==elmnt.maxLength){");
      mySB.Append(this.Page.GetPostBackClientEvent(this,string.Empty));
      mySB.Append("}}</script>");
  
      this.Page.RegisterClientScriptBlock("ValutaLunghezza",mySB.ToString());
    }

    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
      base.AddAttributesToRender (writer);
      writer.AddAttribute("onkeyup","ValutaLunghezza(this,this.value)");
    }

    public  delegate  void MaxLengthEventHandler(object sender, EventArgs e);

    public event MaxLengthEventHandler MaxLengthEvent;
    
    protected virtual void OnMaxLengthEvent(EventArgs e)
    {
      if(MaxLengthEvent != null)
      {
        MaxLengthEvent(this,e);
      }
    }
    void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
    {
      OnMaxLengthEvent(EventArgs.Empty);
    }
    
  

  }
}

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.