[asp.net 3.5]Problema con alert con conferma su pagina aspx

giovedì 28 luglio 2011 - 18.54

mazinga76 Profilo | Newbie

Ciao,
sto impazzendo grazie al fatto che asp.net non funziona il msgbox.
Sto costruendo un sito, ho una master ed una pagina prodotti in cui c'e' la visualizzazione dei prodotti su una gridview dal quale e' possibile effettuare sia la modifica che la cancellazione del prodotto stesso.
il mio problema e' questo, quando si clicca sulla cancellazione del prodotto, da codice, controllo se una altra tabella sono presenti righe con quel id prodotto ed eventualmente devo cancellarli dopo conferma da parte dell'utilizzatore.
sono riuscito a far apparire il pop up con la domanda inserendo uno script sulla pagina aspx l'idea era quella di mettere la risposta su hidden field e la proceura lo fa, il problema e che il popup compare dopo il rendering della pagina e quindi qualsiasi cosa si clicchi non scatta piu' nessun evento.
Allego il codice nella speranza di aver esplicitato correttamente il mio problema:

codice pagina prodotto.aspx:

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Template/master.Master" CodeBehind="Ins_Prodotti.aspx.vb" Inherits="TipografiaTM.Ins_Prod" %>



<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script type="text/javascript" language="javascript">

function ShowConfirmation() {
if (confirm('Cancellando questa categoria verranno eliminati dal listino i prodotti ad essa associati \nSei sicuro di volerla eliminare?') == true)
{
document.getElementById("ctl00_ContentPlaceHolder1_risposta").value = "Si"
}
else
{
document.getElementById("ctl00_ContentPlaceHolder1_risposta").value = "No"
}
}



</script>
<center>
<div>
<br />
<asp:HiddenField ID="risposta" runat="server" />
<asp:button ID="button1" runat="server" Text="Inserisci Nuovo Prodotto" />
<br />
<br />
<asp:Panel ID="Panel1" runat="server" Visible="false" BackColor="#FFFFCC"
Width="747px" BorderColor="#FFFF66" BorderStyle="Groove" >
<br />
<asp:Label ID="lbl_descrizione" runat="server" Text="Descrizione : "></asp:Label>
<asp:TextBox ID="Txt_Descrizione" runat="server" BorderColor="#000066"
BorderStyle="Solid" BorderWidth="1px" Height="16px" Width="284px"></asp:TextBox>
<br />
<br />
<asp:Label ID="Lbl_Didascalia" runat="server" Text="Didascalia : "></asp:Label>
<asp:TextBox ID="Txt_Didascalia" runat="server" BorderColor="#000066"
BorderStyle="Solid" BorderWidth="1px" Height="16px" Width="282px"></asp:TextBox>
<br />
<br />
<asp:FileUpload ID="FileUpload1" runat="server" Height="28px" Width="218px"
style="margin-top: 0px" />
<br />
<br />
<asp:Button ID="Cmd_Inserisci" runat="server" Text="Inserisci" />
<asp:Button ID="Cmd_Annulla" runat="server" Text="Annulla" />
<br />
<br />
</asp:Panel>

<br />
<br />
<asp:Label ID="Label1" runat="server" Text="Label" style="font-weight: 700">Elenco Prodotti</asp:Label>
<br />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1"
EnableModelValidation="True" AllowPaging="True" Width="642px" >
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" Visible="False" ShowHeader="False">
<HeaderStyle ForeColor="LightBlue" />
<ItemStyle ForeColor="White" Width="1px" />
</asp:BoundField>
<asp:ImageField HeaderText="Immagine Prodotto" DataImageUrlField="percorso"
ReadOnly="true" >
<ControlStyle Height="150px" Width="150px" />

</asp:ImageField>
<asp:BoundField DataField="descrizione" HeaderText="Descrizione"
SortExpression="descrizione" />
<asp:BoundField DataField="didascalia" HeaderText="Didascalia"
SortExpression="didascalia" />

<asp:CommandField ShowEditButton="true" ButtonType="Image" EditImageUrl="~/Template/immagini/edit.png" EditText="Modifica" CancelText ="Annulla" CancelImageUrl="~/Template/immagini/stop3.gif" UpdateText="Aggiorna" UpdateImageUrl="~/Template/immagini/save.gif" />
<asp:CommandField ShowDeleteButton="true" ButtonType="Image" DeleteImageUrl="~/Template/immagini/delete.gif" CancelText="Elimina" />


</Columns>
<RowStyle CssClass="gridrow" />
<SelectedRowStyle CssClass="gridselectedrow" />
<HeaderStyle CssClass="gridheader" />
</asp:GridView>

<br />

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:m48962d1ConnectionString %>"
SelectCommand="SELECT [id], [descrizione],[didascalia],[percorso] FROM [prodotti] order by [descrizione]"
UpdateCommand="UPDATE prodotti SET descrizione = @descrizione, didascalia=@didascalia WHERE (id = @id)"
DeleteCommand="Delete from prodotti where id='0'">
<UpdateParameters>
<asp:Parameter Name="descrizione" Type="String" />
<asp:Parameter Name="didascalia" Type="String" />
<asp:Parameter Name="id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>


<br />
<br />

<br />
<br />

</div>
</center>
</asp:Content>


questo l'evento associato alla cancellazione sul pulsante della gridview:
Private Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
Dim connectionstring As String = ConfigurationManager.ConnectionStrings("m48962d1ConnectionString").ConnectionString
Dim conn As New SqlConnection(connectionstring)
Dim comm As New SqlCommand("Select id_prodotto from combinazioni where id_prodotto=" & GridView1.DataKeys(e.RowIndex).Value, conn)
conn.Open()
Dim reader As SqlDataReader = comm.ExecuteReader()
If reader.Read Then
'Dim risp As MsgBoxResult

ClientScript.RegisterStartupScript(Me.GetType(), "showal", "ShowConfirmation()", True)
If risposta.Value = "No" Then
e.Cancel = True
conn.Close()
ElseIf risposta.Value = "Si" Then
conn.Close()
comm = New SqlCommand("delete from combinazioni where id_prodotto=" & GridView1.DataKeys(e.RowIndex).Value, conn)
conn.Open()
comm.ExecuteNonQuery()
conn.Close()
comm = New SqlCommand("delete from prodotti where id=" & GridView1.DataKeys(e.RowIndex).Value, conn)
conn.Open()
comm.ExecuteNonQuery()
conn.Close()
GridView1.DataBind()
End If
End If
conn.Close()
End Sub

quando clicco sul pulsante di cancellazione sel il reader.read e' true lui passa dal comando ClientScript.RegisterStartupScript(Me.GetType(), "showal", "ShowConfirmation()", True) poi verifica due voilte il valore della risposta ed esce dalla routine , quindi poi spunta il popup e non si attiva piu' l'evento.

aiutatemi vi prego. grazie

alx_81 Profilo | Guru

>Ciao,
Ciao

>sto impazzendo grazie al fatto che asp.net non funziona il msgbox.
questo perchè sei sul server. MsgBox non può essere fatto come un messaggio lato client..

>aiutatemi vi prego. grazie
io ti consiglio di cambiare approccio. Fossi in te utilizzerei la tecnologia AJAX per fare in modo di non dover fare voli pindarici per ottenere una conferma.
In poche parole, laddove ti serve, puoi pensare di legare un evento js via jQuery, in modo da far comparire un div (che sembra alla fine un popup modale, come fa ad esempio anche facebook).
Quel div porta con se due pulsanti, e quei pulsanti vanno a server senza fare postback, il sì chiamando solo una funzione che fa il tuo "salvataggio", il no, chiude il div.
Ti consiglio di guardare jQuery: http://jquery.com.

Se hai bisogno sono qui
ciao!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mazinga76 Profilo | Newbie

grazie della risposta.
purtroppo non conosco nulla di jquery.
adesso spulcio un pò il link che mi hai fornito.

potresti riportarmi qualche esempio relativo al mio caso di utilizzo di jquery?

grazie

darkeric Profilo | Senior Member

Ciao Mazinga

dai un occhio anche qui se vuoi

http://javascript.html.it/guide/leggi/168/guida-jquery/


Programmatore per passione!

mazinga76 Profilo | Newbie

grazie
vado subito a leggere la guida

alx_81 Profilo | Guru

>grazie
>vado subito a leggere la guida
appena riesco ti faccio un file semplice in cui, al click di un button appare un div con due pulsanti.
Al no si chiude il popup, e al sì lancio una chiamata ajax che torna il contenuto che metterò in un alert.
ti può bastare?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

mazinga76 Profilo | Newbie

il problema e che l'alert deve partire non associato ad un click ma se si verifica il fatto che il controllo (lato codice tramite reader sql) della presenza dell'elemento di un id prodotto su unaq tabella da esito positivo...
In piu' l'applicazione deve rimanere in stand-by finche' l'utente non clicca su uno dei due tasti quindi mi serve anche leggere quale taso abbia cliccato in modo da definire se annullare l'opearzione di cancellazione o se cancellare....

grazie mille in anticipo
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5