29 messaggi dal 11 settembre 2005
maltra ha scritto:
Metti i controlli runatserver?

<asp:Button ID="Button1" runtat="server" onPreRender="addTrigger_PreRender" />
Code Behind protected void addTrigger_PreRender(object sender, EventArgs e) 
{ 
Button btn = sender as Button; 
ScriptManager manager = (ScriptManager)Master.FindControl("ScriptManager1"); 
manager.RegisterPostBackControl(btn)
ScriptManager1.RegisterPostBackControl(btn)
ScriptManager1.RegisterAsyncPostBackControl(btn) 
}


Nemmeno cosi?


Ok, hai una cena pagata:
protected void addTrigger_PreRender(object sender, EventArgs e)
{
    LinkButton btn = sender as LinkButton;
    ScriptManager1.RegisterAsyncPostBackControl(btn);
}


Praticamente, fammi capire, in questa maniera è come se 'girassi' allo scriptmanager l'onere di gestire il postback di un pulsante x?

Aldo: A volte dorme più lo sveglio che il dormiente
Giovanni: Ma che ... di proverbio è?!
maltra wrote:
ScriptManager manager =
(ScriptManager)Master.FindControl("ScriptManager1");
manager.RegisterPostBackControl(btn)

perdonami, ma questo snippet è profondamente errato, visto che non è necessario cercare in questo modo lo script manager, ma basta utilizzare il metodo statico GetCurrent sulla classe PageManager.
ti pregherei di essere più preciso quando posti soluzioni, perchè poi dall'altra parte puoi non trovare chi è in grado di capire se il codice che posti è corretto o meno. grazie.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
Resto dell'idea che non sia la soluzione migliore/elegante iintercettare l'evento render di ogni controllo dentro il repeater.

Personalmente rimarre con l'approccio spiegato precedentemente dentro il RepaterItemDataBound, poi vedi tu.
Anche se il risultato è lo stesso, nell'altro approccio ne guadangi in manutenzione e leggibilità del codice.

Se hai 10 oggetti nella riga del repeater hai 10 eventi nel codeFile, e se un giorno cambi qualcosa lo devi fare in 10 punti differenti.

Ciauz

imperugo
Microsoft MVP
myblog : http://www.tostring.it
29 messaggi dal 11 settembre 2005
imperugo ha scritto:
Resto dell'idea che non sia la soluzione migliore/elegante iintercettare l'evento render di ogni controllo dentro il repeater.

Personalmente rimarre con l'approccio spiegato precedentemente dentro il RepaterItemDataBound, poi vedi tu.
Anche se il risultato è lo stesso, nell'altro approccio ne guadangi in manutenzione e leggibilità del codice.

Se hai 10 oggetti nella riga del repeater hai 10 eventi nel codeFile, e se un giorno cambi qualcosa lo devi fare in 10 punti differenti.

Ciauz


Ciao,
sono d'accordo con te, nell'usare 'as usual' l'ItemDataBound del repeater interno per assegnare delle proprietà ai controlli, nella fattispecie provare a creare il trigger per il linkbutton, ed è stata la prima cosa che ho provato a fare prima di usare la soluzione precedente.

Purtroppo l'errore era sempre lo stesso:
[B]A control with ID linkbuttonid could not be found for the trigger in UpdatePanel 'UpdatePanel1'.[B]
cioè di non riuscire 'a far vedere' i linkbutton contenuti nel repeater annidato nel primo repeater (marò...) all'UpdatePanel;

Aldo: A volte dorme più lo sveglio che il dormiente
Giovanni: Ma che ... di proverbio è?!
Ti ho risposto precedentemente mostrandoti dove sbagliavi.
Tu cercavidi recuperare il Repater dalla riga del repeater, e già qui è sbagliato.
Poi tentavi di aggiungere il repeater come trigger (sbagliato anche questo) per l'evento Edit (sbagliato anche questo) che non esiste nel repeater.

È ovvio che così non funzioni, ma non è che non funziona perchè la strada è sbagliata, ma per come l'hai implementata.

Ciauz

imperugo
Microsoft MVP
myblog : http://www.tostring.it
29 messaggi dal 11 settembre 2005
imperugo ha scritto:
Ti ho risposto precedentemente mostrandoti dove sbagliavi.
Tu cercavidi recuperare il Repater dalla riga del repeater, e già qui è sbagliato.
Poi tentavi di aggiungere il repeater come trigger (sbagliato anche questo) per l'evento Edit (sbagliato anche questo) che non esiste nel repeater.

È ovvio che così non funzioni, ma non è che non funziona perchè la strada è sbagliata, ma per come l'hai implementata.

Ciauz


Ari-Ciao :)
Quello postato era una seconda prova fatta sul Repeater (un pò alla disperata) dopo che la prima prova fatta direttamente sul linkbutton indicando l'evento "Click" non aveva funzionato lo stesso.

Effettivamente ho fatto male a postare quello snippet 'strampalato' anche se l'errore era sempre lo stesso.
Cerco di fare una nuova prova e posto snippet ed errore (ma se l'errore non c'è è ancora meglio).

Aldo: A volte dorme più lo sveglio che il dormiente
Giovanni: Ma che ... di proverbio è?!
Direi già meglio :D.

>ma se l'errore non c'è è ancora meglio

sperem!

byez

imperugo
Microsoft MVP
myblog : http://www.tostring.it
29 messaggi dal 11 settembre 2005
imperugo ha scritto:
Occhio che qui c'è qualcosa che non va!

Primo dalla riga tu stai cercando di recuperare il repeater e assegnarlo come trigger, casomai dovresti salire di livello per recuperare il repeater.
Btw, cerchi di assegnare l'evento edit di un repeater al trigger, solo che il repeater non ha l'evento edit.

Forse devi fare una roba del genere:

Button btn= e.Item.FindControl("TuoBottone") as Button;
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = btn.ID;
trigger.EventName = "Click";
UpdatePanel1.Triggers.Add(trigger);

Ciauz


Ho ri-provato con:
        LinkButton btn = e.Item.FindControl("LKB_DOCONFIRM") as LinkButton;
        AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
        trigger.ControlID = btn.ID;
        trigger.EventName = "Click";
        UpdatePanel1.Triggers.Add(trigger);


Ma purtroppo l'errore è sempre lo stesso:
A control with ID 'LKB_DOCONFIRM' could not be found for the trigger in UpdatePanel 'UpdatePanel1'.

Aldo: A volte dorme più lo sveglio che il dormiente
Giovanni: Ma che ... di proverbio è?!

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.