Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Delete & DataGrid

  1. #1

    Delete & DataGrid

    ciao,
    allora io devo cancellare un record con il datagrid. visto che sono un novelino vi riporto il codice:
    codice:
    DataGrid
    <asp:DataGrid id="dgData" runat="server" BackColor="#00C0C0" BorderColor="Black" BorderWidth="2px" ForeColor="Black" ShowFooter="True" AllowSorting="True" AutoGenerateColumns="False" HorizontalAlign="Center" AllowCustomPaging="True" AllowPaging="True" OnDeleteCommand="dgData_Delete" DataKeyField="id">
                    <FooterStyle backcolor="Wheat"></FooterStyle>
                    <HeaderStyle font-bold="True" backcolor="Aqua"></HeaderStyle>
                    <AlternatingItemStyle bordercolor="White" backcolor="Green"></AlternatingItemStyle>
                    <Columns>
                        <asp:BoundColumn HeaderText="Nome" DataField="Nome" />
                        <asp:BoundColumn HeaderText="Congome" DataField="Cognome" />
                        <asp:BoundColumn HeaderText="Città" DataField="Città" />
                        <asp:BoundColumn HeaderText="Email" DataField="Email" />
                        <asp:HyperLinkColumn Text="Modificami" DataNavigateUrlField="id" DataNavigateUrlFormatString="update.aspx?ID={0}" Target="_new" />
                        <asp:ButtonColumn HeaderText="" Text="Cancella" CommandName="delete" />
                    </Columns>
                </asp:DataGrid>
    
    la parte delle funzioni:
        Dim Conn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;" & _
                                                        "Initial Catalog=Agenda")
        sub Page_Load(obj as object, e as eventargs)
            if not page.ispostback then
                FillDataGrid()
            end if
        end sub
    
        Sub dgData_Delete(obj As Object, e As DataGridCommandEventArgs)
            dim strSQL as String = "DELETE FROM Clienti WHERE id="&e.item.itemIndex+1
    
            ExecuteStatement(strSQL)
    
            FillDataGrid()
        End Sub
    
        sub FillDataGrid(Optional EditIndex as integer=-1)
            dim objcmd as new SqlCommand("SELECT * FROM Clienti", Conn)
    
            dim objReader as SqlDataReader
    
            try
                objcmd.connection.open()
                objreader = objcmd.executereader()
            catch ex as exception
                lblMessage.Text="Errore"
            end try
    
            dgData.DataSource = objReader
            if not editindex.equals(nothing) then
                dgData.EditItemIndex = EditIndex
            end if
    
            dgData.DataBind()
            objReader.Close
            objCmd.Connection.Close()
        end sub
    
        sub ExecuteStatement(sql as string)
            dim objCmd as new SqlCommand(sql,conn)
    
            try
                objcmd.connection.open()
                objcmd.executenonquery()
            catch ex as exception
                lblMessage.Text="Query"
    
            end try
    
            objcmd.connection.close()
    
    
        end sub

    aiutatemi vi prego

  2. #2
    Credo di aver quasi risolto, ho aggiunto un ItemTemplate e ci ho messo un pulsante che all'evento click va in una funzione Cancella.
    Il mio unico problema è come gli passo l'ID da cancellare?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    200
    Per avere il valore dell'ID del record selezionato (nella proceduradi cancellazione) non devi fare altro che:

    dim codice as integer
    codice = NomeDataGrid.DataKeys(Cint(e.item.itemindex))

    Così facendo ti restituirà il valore del DaTaKey del tuo DataGrid alla posizione sulla quale hai cliccato

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Prova così:
    <%#Nome_funzione(Container.DataItem("Nome_Campo_id "))%>
    Ciao
    Legnetto

  5. #5
    se provo a fare come dice Davide83 ricevo questo errore:
    Errore di compilazione
    Descrizione: Si è verificato un errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Verificare i dettagli dell'errore specifico riportati di seguito e modificare il codice sorgente in modo appropriato.

    Messaggio di errore del compilatore: BC30512: Option Strict On non consente conversioni implicite da "System.Object" a "Integer".

    Errore nel codice sorgente:



    Riga 54: Sub Cancella(obj As Object, e As DataGridCommandEventArgs)
    Riga 55: dim codice as integer
    Riga 56: codice = dgData.DataKeys(Cint(e.item.itemindex))
    Riga 57: dim strSQL as String = "DELETE FROM Clienti WHERE id="&codice
    Riga 58: ExecuteStatement(strSQL)


    x Legnetto

    dove lo metto:
    <%#Nome_funzione(Container.DataItem("Nome_Campo_id "))%>

  6. #6
    Davide83, mi faresti vedere come fai a cancellare nel datagrid cosi faccio copia e incolla nella speranza di risolvere.

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Dato che la maggior parte dei controlli che uso me li sono creati io, non posso copiarti il codice e dartelo perchè senza i miei namespace non funzionerebbero.
    Io navigo nel forum solo quando mi prendo un po di pausa(O quando sono piantato!!)e scrivere tutto il codice con un minimo di spiegazione mi porterebbe via troppo tempo.
    Ciao
    Legnetto

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    200
    Potresti postare la dichiarazione del tuo datagrid?

  9. #9
    questo è il datagrid:
    codice:
    <asp:DataGrid id="dgData" runat="server" OnDeleteCommand="Cancella" AutoGenerateColumns="False" OnPageIndexChanged="dgData_PageIndexChanged" cellspacing="0" cellpadding="4" GridLines="Horizontal">
                    <HeaderStyle font-bold="True" horizontalalign="Center" verticalalign="Middle" backcolor="LightCoral"></HeaderStyle>
                    <PagerStyle font-size="Medium" font-italic="True" font-bold="True" backcolor="Magenta" pagebuttoncount="2" mode="NumericPages"></PagerStyle>
                    <AlternatingItemStyle font-italic="True" backcolor="#00C000"></AlternatingItemStyle>
                    <ItemStyle horizontalalign="Center" backcolor="#C0C000"></ItemStyle>
                    <Columns>
                        <asp:BoundColumn DataField="Nome" HeaderText="Nome"></asp:BoundColumn>
                        <asp:BoundColumn DataField="Cognome" HeaderText="Congome"></asp:BoundColumn>
                        <asp:BoundColumn DataField="Citt&#224;" HeaderText="Citt&#224;"></asp:BoundColumn>
                        <asp:BoundColumn DataField="Email" HeaderText="Email"></asp:BoundColumn>
                        <asp:HyperLinkColumn Text="Modificami" Target="_new" DataNavigateUrlField="id" DataNavigateUrlFormatString="update.aspx?ID={0}"></asp:HyperLinkColumn>
                        <asp:TemplateColumn>
                            <ItemTemplate>
                                <asp:LinkButton id="Button1" CommandName="Cancella" runat="server" Text="Cancella" />
                            </ItemTemplate>
                        </asp:TemplateColumn>
                    </Columns>
                </asp:DataGrid>
    mentre queste è la parte delle funzioni:
    codice:
    'Apro la connessione
        Dim Conn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;" & _
                                                        "Initial Catalog=Agenda")
        sub Page_Load(obj as object, e as eventargs)
    
            if not page.ispostback then
                FillDataGrid()
            end if
    
        end sub
    
        sub FillDataGrid(Optional EditIndex as integer=-1)
    
            dim objcmd as new SqlCommand("SELECT * FROM Clienti", Conn)
    
            dim objReader as SqlDataReader
    
            try
                objcmd.connection.open()
                objreader = objcmd.executereader()
            catch ex as exception
                lblMessage.Text="Errore"
            end try
    
            dgData.DataSource = objReader
            if not editindex.equals(nothing) then
                dgData.EditItemIndex = EditIndex
            end if
    
            dgData.DataBind()
            objReader.Close
            objCmd.Connection.Close()
    
        end sub
    
        sub ExecuteStatement(sql as string)
    
            dim objCmd as new SqlCommand(sql,conn)
    
            try
                objcmd.connection.open()
                objcmd.executenonquery()
            catch ex as exception
                lblMessage.Text="Query"
    
            end try
    
            objcmd.connection.close()
    
        end sub
    
        Sub Cancella(obj As Object, e As DataGridCommandEventArgs)
    
           dim nclientiID as integer
                nclientiID = dgData.DataKeys(Cint(e.item.itemindex))
    
           dim strSQL as String = "DELETE FROM Clienti WHERE id="&nclientiID
            ExecuteStatement(strSQL)
            FillDataGrid()
    
        End Sub
    
        Sub dgData_PageIndexChanged(obj As Object, e As DataGridPageChangedEventArgs)
    
            dgData.CurrentPageIndex = e.NewPageIndex
            dgData.DataBind()
    
        End Sub

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    200
    Se mi mandi il tuo indirizzo e-mail,ti mando una pagina contenente la delete che ho fatto tempo fa.
    Ciao

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.