397 messaggi dal 10 ottobre 2002
Scusa se ti rompo, ma non hai qualche risorsa da farmi vedere o qualche esempio che mi dia lo spunto...


grazie
se vuoi stasera dopo cena posso abbozzare qualcosa :) in pratica dobbiamo ridefinire alcuni metodi della textbox

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
Se riesci ti ringrazio, ma anche domani...quando hai tempo
e cmq ti ringrazio davvero vivamente

Massimo
et volilat (ma si scrive così?)

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
  {
    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)");
    }

  }
}


le cose principali da fare sono due eseguire l'override di AddAttributesToRender e inserire l'attributo onkeyup, e il metodo lato cliet che inetendi richiamare il secondo nel load del controllo inserire la funzione e registrare lo scrip.

testato ieri sera e funziona, tieni presente che mancano alcune cose, tipo controllare se uno scritp (lato cliet) è già stato creato ed altre cosette marginali

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, ti ringrazio molto per lo script,
che sto testando,
Ma ho 2 domande da porti:
- a me quello che serve è che dopo aver valutato la lunghezza dei caratteri digitati, venga lanciata un Sub lato server per popolare un dataset!
Quello che ancora non ho chiaro è come fare a far eseguire la sub da Javascript

- l'istruzione new StringBuilder(180) serve ad istanziare
una stringa di 180 caratteri ?

Grazie di nuovo

p.s. mi sento in debito
in pratica quello che fa questa textbox (una volta compilata) è quello di eseguire il postpback della pagina raggiunta la lunghezza massima impostata (proprieta standard della textbox).

una volta che ha eseguito il postback (che verrà eseguito solo se ci sono il tot dei caratteri specificati) puoi eseguire la logica che preferisci lato server.

StringBuilder lo uso per concatenare lo script lato client responsabile del conteggio delle lettere digitate e tramite this.Page.GetPostBackClientEvent inserisco la logia necessaria a eseguire il postback)


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
Ok marco sei chiarissimo, ma mi chiedo:



una volta che ha eseguito il postback (che verrà eseguito solo se ci sono il tot dei caratteri specificati) puoi eseguire la logica che preferisci lato server.



quindi devo controllare che l'oggetto che ha determinato il postback sia il nostro custom control, poichè il postback puo' essere determinato anche da altri oggetti o comportamenti dell'utente, ma è possibile fare questo controllo sull'oggetto che ha scatenato il postback ?

Massimo
si è possibile con qualcosa del genere:

if (Request.Form.Get(myControl.ClientID) != null ).....
se non mi ricordo male

altrimenti con un altro pò di codice si protrebbe fargli generare un evento (soluzione sicuramente più elegante) ieri sera non ho avuto tempo ho giocato ad halo 2 perdendo miseramente :)


ciao marco

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.