Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
MessageBox da DataGrid
martedì 09 settembre 2003 - 19.01
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
1234
Profilo
| Newbie
36
messaggi | Data Invio:
mar 9 set 2003 - 19:01
Ciao,
ho già letto l'articolo del sig. Giannone dove spiega molto bene come creare un message box da Web form
Io avrei però una domanda simile ma in circostanza diversa:
il mio link button per la cancellazione di un record si trova all'interno di un DataGrid e attualmente riesco a cancellare tranquillamente un record in questo modo:
protected void ActivityGrid_OnDelete(Object sender, DataGridCommandEventArgs e)
{
int ActivityID = Convert.ToInt32(ActivityGrid.DataKeys[(int)e.Item.ItemIndex]);
BusinessLogicLayer.tAIMx_Activity.Remove(ActivityID);
BindActivityGrid(Convert.ToInt32(ddlUserList.SelectedItem.Value), monthStartingDate, monthEndingDate);
}
In HTML nella parte di Edit del DataGrid ho definito un imagebutton:
<ItemTemplate>
<asp:imagebutton id="Imagebutton2" ImageUrl="images/icon-delete.gif" AlternateText="Delete"
CommandName="Delete" CausesValidation="False" Runat="server"></asp:imagebutton>
</ItemTemplate>
Quello che mi manca è .... come posso attivare un message box per avvertire l'utente che sta cancellando un record??
Spero tanto che ci sia qu che mi possa aiutare....
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 9 set 2003 - 22:08
Non so se ti piacerà come soluzione ma io ho fatto così e mi sembra molto potente.
Allora ho creato due pagine, una pagina chiamiamola pagina A che fa un elenco con un datagrid dei record e una pagina per fare le insert, delete ed update, chiamiamola pagina B.
Nella pagina A c'è un DataGrid con un HyperlinkColumn di questo tipo:
<asp:HyperLinkColumn Text="<img src=/images/delete.gif border=0>" DataNavigateUrlField="FieldID" DataNavigateUrlFormatString="javascript:Delete({0});">
<ItemStyle BackColor="Moccasin"></ItemStyle>
</asp:HyperLinkColumn>
In pratica viene rappresentata l'immagine delete.gif che è una crocetta rossa e cliccandoci sopra scatta questo Javascript sempre nella pagina A:
function Delete(newsid)
{
var truthBeTold = window.confirm("Vuoi effettivamente cancellare questo articolo?");
if (truthBeTold)
location.href="/paginaB.aspx?FieldID=" + newsid + "&op=delete";
else
return;
}
Questo Script in pratica ti chiede se vuoi cancellare il record, se scegli annulla non succede niente se premi Ok il controllo viene passato alla pagina B passando nell'URL l'ID del Record. La pagina B fa una Request, cancella il Record e fa di nuovo un Redirect sulla pagina A.
Un po' macchinoso ma funziona alla grande. Io mi trovo benissimo.
Ciao
David De Giacomi
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
mer 10 set 2003 - 12:32
Ottima soluzione quella di David...
... una alternativa potrebbe essere quella di attaccarsi all'evento ItemDataBound di DataGrid, recuperare il riferimento all'ImageButton, utilizzando i soliti:
e.Item.FindControl("imagebuttonname");
e quindi aggiungere la chiamata ad un tuo javascript che visualizza l'alert nell'onclick:
objImageBtn.Attributes["onclick"] = "return mioAlert();";
dove in mio alert chiedi la conferma, e se l'utente preme ok fai ritornare un true proseguendo l'azione (postback), se invece preme annulla fai ritornare false, annullando il tutto.
Spero di esser stato chiaro. Buona scelta.
Ciao!
---
Stefano Giannone [MCP .NET]
stefano_NOSPAM@dotnethell.it (per scrivermi togliete "_NOSPAM" dall'indirizzo)
1234
Profilo
| Newbie
36
messaggi | Data Invio:
mer 10 set 2003 - 14:30
Grazie per l'aiuto. Ho però un problema, ora il messaggio mi appare in modo alternativo: nel senso che per un record cancellato mi appare e per il successivo no.
Ecco il codice che ho aggiunto al metodo NomeDataGrid_ItemBound(...):
if (e.Item.ItemType == ListItemType.Item)
{
ImageButton btn = (ImageButton) e.Item.FindControl("Imagebutton2");
btn.Attributes.Add("OnClick", "return(confirm('You are about to delete.Click OK to continue... '))");
}
Se non imposto la condizione ottengo il seguente errore:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
alla seconda riga del codice.
Come posso procedere?
Admin
Profilo
| Junior Member
160
messaggi | Data Invio:
mer 10 set 2003 - 15:06
modifica la if, in questo modo:
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
...
}
in questo modo il codice verrà eseguito soltanto se si tratta delle righe della grid, escluse header e footer (motivo per cui se non metti la if va in errore).
Ciao!
---
Stefano Giannone [MCP .NET]
stefano_NOSPAM@dotnethell.it (per scrivermi togliete "_NOSPAM" dall'indirizzo)
1234
Profilo
| Newbie
36
messaggi | Data Invio:
mer 10 set 2003 - 15:24
GRANDIOSO... ora funziona...
grazie :)
marcoorru
Profilo
| Newbie
1
messaggi | Data Invio:
gio 22 mag 2008 - 09:09
Ciao sto cercando di implementare questa soluzione
ecco il codice:
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
If ((e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem)) Then
Dim ib As ImageButton = CType(e.Item.FindControl("deleteImage"), ImageButton)
ib.Attributes.Add("OnClick", "return(confirm('You are about to delete.Click OK to continue... '))")
End If
End Sub
quando do' la conferma per la cancellazione questa non avviene più... forse mi sono perso un pezzo
Torna su
Stanze Forum
Elenco Threads
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 !