<%@ Page Language="vb" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Data" %>

<script runat="server">
Dim ds As DataSet
Dim dv As DataView

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    If Session("datagrid") Is Nothing Then

        'Importa la connessione
        Dim myConnection As New
            OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data
            Source=D:\Documenti\HTML.it\Articoli\ASP.net\DataGrid\DataGrid.mdb")

        'Apri la connessione
        Dim myCommand As New OleDbDataAdapter("select * from Utenti", myConnection)

        'Riempi l'oggetto DataSet
        ds = New DataSet()
        myCommand.Fill(ds, "Utenti")

        Session("datagrid") = ds
    Else
        ds = Session("datagrid")
    End If

    'Crea DataView
    dv = New DataView(ds.Tables("Utenti"))
    dv.Sort = "ID"

    DataGrid1.DataSource = dv
    If Not Page.IsPostBack Then
        DataBind()
    End If
End Sub

Private Sub DataGrid1_Edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
    DataGrid1.EditItemIndex = e.Item.ItemIndex
    DataGrid1.DataBind()
End Sub

Private Sub DataGrid1_Update(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
    'Leggi dati
    Dim txtNome As TextBox = e.Item.Cells(1).Controls(0)
    Dim txtCognome As TextBox = e.Item.Cells(2).Controls(0)
    Dim txtIndirizzo As TextBox = e.Item.Cells(3).Controls(0)
    Dim txtCitta As TextBox = e.Item.Cells(4).Controls(0)
    Dim txtCAP As TextBox = e.Item.Cells(5).Controls(0)

    Dim idUtente As String = e.Item.Cells(0).Text
    Dim Nome As String = txtNome.Text
    Dim Cognome As String = txtCognome.Text
    Dim Indirizzo As String = txtIndirizzo.Text
    Dim Citta As String = txtCitta.Text
    Dim CAP As String = txtCAP.Text
    Dim hlkSito As HyperLink = e.Item.Cells(6).Controls(0)
    Dim Sito As String = hlkSito.NavigateUrl

    'elimina riga
    dv.RowFilter = "id=" + idUtente
    If dv.Count > 0 Then
        dv.Delete(0)
    End If
    dv.RowFilter = ""

    'inserisci nuova riga
    Dim dr As DataRow = ds.Tables("Utenti").NewRow()
    dr(0) = idUtente
    dr(1) = Nome
    dr(2) = Cognome
    dr(3) = Indirizzo
    dr(4) = Citta
    dr(5) = CAP
    dr(6) = Sito
    ds.Tables("Utenti").Rows.Add(dr)

    DataGrid1.EditItemIndex = -1
    DataGrid1.DataBind()

    'Aggiorna il DB
    Dim myConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
    Data Source=D:\Documenti\HTML.it\Articoli\ASP.net\DataGrid\DataGrid.mdb")
    Dim myCommand As New OleDbCommand("UPDATE Utenti SET Nome=?, Cognome=?,
        Indirizzo=?, Citta=?, CAP=? WHERE id=?", myConnection)
    myCommand.Parameters.Add(New OleDbParameter("@1", Nome))
    myCommand.Parameters.Add(New OleDbParameter("@2", Cognome))
    myCommand.Parameters.Add(New OleDbParameter("@3", Indirizzo))
    myCommand.Parameters.Add(New OleDbParameter("@4", Citta))
    myCommand.Parameters.Add(New OleDbParameter("@5", CAP))
    myCommand.Parameters.Add(New OleDbParameter("@6", idUtente))
    myConnection.Open()
    myCommand.ExecuteNonQuery()
    myConnection.Close()
End Sub

Private Sub DataGrid1_Cancel(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
    DataGrid1.EditItemIndex = -1
    DataGrid1.DataBind()
End Sub

Private Sub DataGrid1_Delete(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
    If e.CommandSource.CommandName = "delete" Then
        Dim idUtente As String = e.Item.Cells(0).Text

        'elimina riga
        dv.RowFilter = "id=" + idUtente
        If dv.Count > 0 Then
            dv.Delete(0)
        End If
        dv.RowFilter = ""

        DataGrid1.EditItemIndex = -1
        DataGrid1.DataBind()

        'Aggiorna il DB
        Dim myConnection As New
            OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data
            Source=D:\Documenti\HTML.it\Articoli\ASP.net\DataGrid\DataGrid.mdb")
        Dim myCommand As New OleDbCommand("DELETE FROM Utenti WHERE id=" +
        idUtente.ToString, myConnection)
        myConnection.Open()
        myCommand.ExecuteNonQuery()
        myConnection.Close()
    End If
End Sub

</script>

<html>
<head><title>DataGrid</title></head>
<body>
    <form id="Form1" method="post" runat="server">
        <asp:datagrid id="DataGrid1" runat="server"
            HeaderStyle-BackColor="#ccffff"
            BorderColor="Black" CellPadding="4"
            Width="550px"
            Font-Names="Verdana"
            Font-Size="8pt"
            OnItemCommand="DataGrid1_Delete"
            OnUpdateCommand="DataGrid1_Update"
            OnCancelCommand="DataGrid1_Cancel"
            onEditCommand="DataGrid1_Edit"
            AutoGenerateColumns="false">

            <Columns>
                <asp:BoundColumn DataField="ID" HeaderText="Codice"
                    readonly="true" />
                <asp:BoundColumn DataField="Nome" HeaderText="Nome" />
                <asp:BoundColumn DataField="Cognome" HeaderText="Cognome" />
                <asp:BoundColumn DataField="Indirizzo" HeaderText="Indirizzo" />
                <asp:BoundColumn DataField="Citta" HeaderText="Cittę" />
                <asp:BoundColumn DataField="CAP" HeaderText="CAP" />
                <asp:HyperLinkColumn Text="Sito Web" HeaderText="Sito Web"
                    DataNavigateUrlField="SitoWeb" />
                <asp:EditCommandColumn ButtonType="LinkButton"
                    HeaderText="Modifica" EditText="Modifica"
                    UpdateText="Aggiorna" CancelText="Annulla" />
                <asp:ButtonColumn Text="Elimina" ButtonType="PushButton"
                    HeaderText="Elimina" CommandName="delete" />
            </Columns>
        </asp:datagrid>
    </form>
</body>
</html>