Visualizzazione dei risultati da 1 a 7 su 7

Discussione: cancellare record

  1. #1

    cancellare record

    Vorrei cancellare un record da una tabella Access in base al suo id quando un utente clicca sul pulsante DELETE in corrispondenza della riga su una datagrid.


    Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.DeleteCommand

    Dim query as new String ("DELETE FROM tblAttivita WHERE id="&e.Item.ItemIndex)
    Dim oleDbDataAdapter1 as new oleDbDataAdapter(query,conn)
    Dim data As new dataset()

    oleDbDataAdapter1.Update(data,"tblAttivita")

    datagrid1.datasource = data
    datagrid1.databind()

    End Sub

    Ovviamente non succede nulla.
    1) Come posso risalire a id relativo alla riga da cancellare?
    2) Come si esegue una delete?

    Grazie

  2. #2
    e.Item.ItemIndex ti restituisce l'indice della riga del datagrid, mentre a te ti serve l'indice della tabella del database.
    Nell datagrid, sull parte aspx devi settare la proprietà DataKeyField, mettendo il campo chiave della tabella (quindi ID).
    per recuperare l'ID, usi questa sintassi:

    datagrid1.DataKeys[e.Item.ItemIndex]

  3. #3
    Utente di HTML.it L'avatar di Ottavio
    Registrato dal
    Jul 2000
    Messaggi
    286
    Dim myCommand As OleDBCommand
    Dim strUpdateStmt As String


    strUpdateStmt = " DELETE FROM Fornitore " & _
    " WHERE IDFornitore = " & MyDataGrid2.DataKeys(CInt(E.Item.ItemIndex))


    myCommand = New OleDBCommand(strUpdateStmt, myConnection)
    myConnection.Open()
    TRY
    myCommand.ExecuteNonQuery()
    CATCH DBE as system.data.oledb.oledbexception
    lblMessage.Text = "Errore " + dbe.tostring()
    END TRY
    MyDataGrid2.EditItemIndex = -1
    myConnection.close()
    BindData()
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Era un mondo adulto, si sbagliava da professionisti....
    <P.Conte>
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  4. #4

    ok, funziona

    Grazie mille.

    Un ultimo dubbio.

    Invece che dichiarare una variabile
    myCommand = New OleDBCommand(strUpdateStmt, myConnection)
    mi trovo costretto a dichiararla così:
    myCommand = New System.Data.OleDb.OleDbCommand(strUpdateStmt, myConnection)

    Lavorando codebehind oltre a:
    Inherits System.Web.UI.Page
    devo dichiarare anche qualcosa d'altro tipo:
    Inherits System.Data ?

    Per finire così avviene la cancellazione del record ma nel datagrid non viene aggiornato.
    Per far sì che dopo la cancellazione del record venga visualizzata la datagrid aggiornata come posso fare?


    Grazie ancora

  5. #5
    Utente di HTML.it L'avatar di Ottavio
    Registrato dal
    Jul 2000
    Messaggi
    286
    Imports System.Data

    Imports System.Data.OleDb


    per refreshare i dati
    devi RIchiamare il
    codice che usi
    per popolare la grid
    è questo il senso
    di
    BindData()
    dopo il mio
    myConnection.close()
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Era un mondo adulto, si sbagliava da professionisti....
    <P.Conte>
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  6. #6

    bindData()

    Nel mio codice ho sostituito bindData()
    con:
    DataGrid1.DataSource = DataSet11
    DataGrid1.DataBind()

    Credo che il problema sia nella sub:

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    With DataGrid1
    .AllowPaging = True
    .PagerStyle.Mode = PagerMode.NumericPages
    .PageSize = 6
    .PagerStyle.PageButtonCount = 5
    End With
    If IsPostBack Then
    DataSet11 = CType(Session("dataset"), DataSet1)
    Else
    OleDbDataAdapter1.Fill(DataSet11)
    Session("dataset") = DataSet11
    DataBind()
    End If


    E' possibile che in questo modo essendo un postback la variabile session("dataset") non venga aggiornata?

  7. #7

    ho risolto

    Bastava pulire il dataset
    Dataset11.clear()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.