Ciao Anna70
intanto ti ringrazio per la risposta.
l'evento che hai usato è collegato ad un oggetto un pò "vecchiotto", strettamente connesso al frameWork 1.0 e 1.1, ovvero il DataGrid (DG).
Effettivamenteo ho notato che se popolo il mio GridView (GW) nel modo canonico, ovvero non utilizzando un DataSource (DS) mi complico inutilmente la vita, per tutto ciò che concerne le funzioni tipiche del GW.
Utilizzando anche da Code Behind un DS, invece il tutto diventa incredibilmente semplice.
ti posto il mio ultimo test, tramite il quale ho generato una GW facilmente paginabile, modificabile e dalla quale è possibile eliminare record con conferma in JavaScript:
i vari passaggi:
1) per prima cosa nella pagina .aspx bisogna creare un GW ed un DataSource (DS)
2) nella pagina .aspx.vb (o aspx.cs) bisogna andare a dare i parametri di configurazione ai 2 oggetti creati, come il file DB al quale il DS fa riferimento.
3) automaticamente il GW sarà gestibile in modo molto + semplice rispetto al canonico DataBind (DaBi) che si utilizzava nelle "vecchie" DataGrid
posto un pò di codice onde rendere più chiaro l'esempio.
la pagina .aspx (notare come ho dichiarato solo il nome del DS, ed ho creato un metodo nominato AggiornaGW tramite il quale aggiorno i dati) :
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="gwCorretta.aspx.vb" Inherits="gw2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Pagina senza titolo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="IdStruttura"
OnRowUpdating="AggiornaGW"
OnRowDeleting="CancellaGW"
>
<Columns>
<asp:BoundField DataField="IdStruttura" HeaderText="IdStruttura"
InsertVisible="False" ReadOnly="True" SortExpression="IdStruttura" Visible="false"/>
<asp:BoundField DataField="NomeStruttura" HeaderText="NomeStruttura"
SortExpression="NomeStruttura" />
<asp:TemplateField HeaderText="Elimina">
<ItemTemplate>
<asp:Button CommandName="Delete" runat="server" OnClientClick="return confirm('Vuoi Cancellare ?');" Text="X"/>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="true" HeaderText="Edita" ButtonType="Button"/>
</Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"/>
</div>
</form>
</body>
</html>
ed infine la pagina .vb.aspx nella quale dichiaro i parametri associati ai vari oggetti, che ne permettono il funzionamento:
Partial Class gw2
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Page.Title = "Grid Corretta!"
AccessDataSource1.SelectCommand = "SELECT IdStruttura, NomeStruttura FROM Struttura"
AccessDataSource1.DataFile = "~/App_Data/TCClub.mdb"
GridView1.DataSourceID = "AccessDataSource1"
GridView1.AllowPaging = True
GridView1.PageSize = 4
End Sub
Sub AggiornaGW(ByVal obj As Object, ByVal e As GridViewUpdateEventArgs) Handles GridView1.RowUpdating
AccessDataSource1.UpdateCommand = "UPDATE struttura SET NomeStruttura = ? WHERE IdStruttura = ?"
End Sub
Sub CancellaGW(ByVal obj As Object, ByVal e As GridViewDeleteEventArgs) Handles GridView1.RowDeleting
AccessDataSource1.DeleteCommand = "DELETE * FROM Struttura WHERE IdStruttura = ?"
End Sub
End Class
Ecco come ho creato programmaticamente e con pochissimo sforzo (tranne quello per arrivare a questa deduzione da neofita...) una procedura che consenta di
gestire GW in modo semplice.