11 messaggi dal 04 marzo 2008
Buongiorno

stò studiando con il maggior dettaglio possibile tutti gli eventi associati ad una GridView (Paginazione, Cancellazione record, Modifica etc.) ma stò avendo difficoltà a ritrovare spiegazioni esaustive che mi ilustrino come gestire programmaticamente (ovvero tramite code-behind) l'aggiornamento di dati presenti nella stessa.

Tutto ok quando cliccando sul pulsante "seleziona" si scatena l'evento "RowEditing" che riesco a gestire egregiamente

 
Sub Grid_RowEditing(ByVal obj As Object, ByVal e As GridViewEditEventArgs) Handles Grid.RowEditing
Grid.EditIndex = e.NewEditIndex
Grid.DataBind()
End Sub


il problema nasce quando cliccando sul pulsante "modifica" , per attuare le modifiche direttamente nel db tramite SQL

quello che non riesco a fare è intercettare i nuovi valori che ho inserito, valori che dovrebbero essere intercettati nell'evento "RowUpdating"

    Sub grid_RowUpdate(ByVal obj As Object, ByVal e As GridViewUpdateEventArgs) Handles Grid.RowUpdating
        'Dim NomeStr As String = e.NewValues("NomeStruttura").ToString -->errato
        'Dim NomeStruttura As String = NomeStrTextBox.Text.ToString----> errato 
        
'---> non mi restituisce nulla
        If e.NewValues("NomeStruttura") = "ciccio" Then 
            Label1.Text = "prova"
        End If
    End Sub


Potreste cortesemente indicarmi qualche fonte o addirittura postarmi un pò di codice per gestire l'aggiornamento ?

Grazie anticipatamente

Marco

ps: riesco tranquillamente a gestire un aggiornamento tramite i parametri di un DataSource collegato alla GridView, inserito direttamente nella pagina aspx, ma non è quello che mi interessa.
4 messaggi dal 11 marzo 2008
a me così funziona
sub dbgri_updatecommand(byval sndr as object, byval e as datagridcommandeventargs)

dim varpiu as string
dim varmeno as string
dim aggiorna as string

varpiu= cType(e.Item.Cell(10).Controls(0), textbox).text
varmeno= cType(e.Item.Cell(11).Controls(0), textbox).text

aggiorna = "UPDATE tabella set Variazpiu=" & tosqlnum(varpiu) & "," & "Variameno=" & tosqlnum(varmeno)

poi continui con le procedure.
11 messaggi dal 04 marzo 2008
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.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.