44 messaggi dal 04 marzo 2012
Ciao,
ho una semplice DataGridView (in VB), per la quale vorrei aggiungerci la possibilità di aggiornare uno o più campi.
Senza mettere codice mi viene visualizzato il seguente messaggio:
"L'aggiornamento non è supportato dall'origine dati 'SqlDataManutenzioniDettaglio' a meno che non si specifichi UpdateCommand."

Il codice:
<asp:GridView ID="dgvManutenzioni" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataManutenzioniDettaglio">
<Columns>
<asp:CommandField SelectText="" ShowSelectButton="True">
<HeaderStyle Width="1px" />
</asp:CommandField>
<asp:BoundField DataField="IDManutenzioneD" HeaderText="IDManutenzioneD"
SortExpression="IDManutenzioneD" Visible="False" />
<asp:BoundField DataField="IDManutenzione" HeaderText="IDManutenzione"
SortExpression="IDManutenzione" Visible="False" />
<asp:BoundField DataField="Codice" HeaderText="Codice"
SortExpression="Codice" />
<asp:BoundField DataField="Descrizione" HeaderText="Descrizione"
SortExpression="Descrizione" />
<asp:BoundField DataField="DataScadenza" DataFormatString="{0:d}"
HeaderText="DataScadenza" SortExpression="DataScadenza" />
<asp:BoundField DataField="Eseguito" HeaderText="Eseguito"
SortExpression="Eseguito" />
<asp:BoundField DataField="DataEsecuzione" DataFormatString="{0:d}"
HeaderText="DataEsecuzione" SortExpression="DataEsecuzione" />
<asp:BoundField DataField="Incaricato" HeaderText="Incaricato"
SortExpression="Incaricato" />
<asp:BoundField DataField="Periodicita" HeaderText="Periodicita"
SortExpression="Periodicita" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataManutenzioniDettaglio" runat="server"
ConnectionString="<%$ ConnectionStrings:HTS_GestioneConnectionString %>"
SelectCommand="SELECT * FROM [VW_Q_ManutenzioniPianificate] ORDER BY [DataScadenza],
[Descrizione]">
</asp:SqlDataSource>

Pertanto mi sorgono alcune domande:
- Devo inserire qualche controllo a livello di codice per poter aggiornare il DB? Mi fate un esempio per cortesia, tenete presente che la query che visualizza i dati è una View e non è la tabella vera e propria.
- Quando clicco sul tasto "modifica" mi permette di modificare tutti i campi mentre io vorrei poterne modificare solo uno o due, come posso fare?
- Se io modifico un campo mi piacerebbe intercettare la modifica così da cambiare automaticamente altri campi del record? Come faccio?

Ringrazio anticipatamente.
475 messaggi dal 11 febbraio 2013
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                  DataKeyNames="CustomerID" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:CommandField ShowEditButton="True" />
            <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" SortExpression="CustomerID" />
            <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" ReadOnly="True" />
            <asp:BoundField DataField="ContactName" HeaderText="ContactName" SortExpression="ContactName" ReadOnly="True" />
            <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" ReadOnly="True" />
            <asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" />
            <asp:BoundField DataField="Fax" HeaderText="Fax" SortExpression="Fax" />
        </Columns>
    </asp:GridView>

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:northwindConnectionString %>" 
        SelectCommand="SELECT * FROM [Customers]"
        UpdateCommand="UPDATE [Customers] SET [Phone] = @Phone, [Fax] = @Fax 
                       WHERE [CustomerID] = @CustomerID">
        <UpdateParameters>
            <asp:Parameter Name="Phone" Type="String" />
            <asp:Parameter Name="Fax" Type="String" />
            <asp:Parameter Name="CustomerID" Type="String" />
        </UpdateParameters>
    </asp:SqlDataSource>


questo esempio ti permette di modificare solo Fax e Phone come da updateCommand e parameters

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.