Javascript e buttoncolumn

venerdì 09 giugno 2006 - 15.43

rob72 Profilo | Newbie

ciao a tutti
ho il seguente problema:
in una pagina .ascx ho un oggetto datagrid collegato ad un dataview; a questo datagrid ho aggiunto una colonna di tipo ButtonColumn; nella corrispondente pagina vb ho scritto il codice per gestire gli eventi sulla griglia
il bottone in questione serve a cancellare uno per uno i record visualizzati nella griglia:
vorrei visualizzare un messaggio di avvertimento per chiedere all'utente conferma sulla cancellazione del record
avevo pensato di usare la confirm (mi pare che si chiami così) di javascript, però:
1 - come faccio a legare il codice javascript alla ButtonColumn?
2 - una volta che l'utente ha confermato come faccio a richiamare la sub di cancellazione nella pagina vb?
grazie in anticipo a chi può darmi qualche consiglio

alx_81 Profilo | Guru

Se usi la button column, non ti saprei dire con certezza, ho appena provato e non riesco ad accedere all'id..
Se però fai un template column e ci metti un button basta ricavare il bottone dall'evento ItemDataBound del DataGrid. Poi devi aggiungere tramite il metodo Add della collection Attributes l'evento onclick..
es:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

così funziona.. se il return è false non fa la subit, in caso contrario la fa..
Se usi la ButtonColumn non so aiutarti, mi spaice..
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

bluland Profilo | Guru

mi commenti questi metodi che hai usato :

If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then

DirectCast(e.Item.FindControl("MioBottone")




grazie Enzo

rob72 Profilo | Newbie

perfetto!!!
era già da qualche giorno che stavo perdendo la testa con questa problema
grazie mille

alx_81 Profilo | Guru

--> If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then
Questo serve per controllare che ti trovi effettivamente sulla riga di dato e non su intestazioni o paginatori..

Infatti il datagrid può essere fatto così:
--- INTESTAZIONE --- Header
--- RIGA 1 --- Item
--- RIGA 2 --- AlternatingItem
--- RIGA N --- Item
--- PAGINATORE --- Pager
--- PIEDE --- Footer

la variabile e (che possiede gli argomenti dell'evento scatenato) ha una proprietà ItemType che ti dice di che tipo è la riga su cui l'evento è generato. Perchè tale evento viene scatenato per ogni riga (item) del datagrid, indipendentemente dal tipo.
Quindi la logica che ti ho scritto deve essere eseguita solo nelle righe di dato.



-- > DirectCast(e.Item.FindControl("MioBottone"),Button)
La directCast converte impone ad un oggetto di essere tipizzato su di un altro, solo se questo è concesso (come da regole di programmazione ad oggetti).
e.Item è la riga del DataGrid ed il metodo FindControl cerca, per ID, il controllo che ti serve, restituendo un object, il quale va "castato" sul tipo definito dopo la virgola, vedi Button...
tutto chiaro?
spero ti sia stato utile.
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5