- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Errore sui parametri
-
Errore sui parametri
Salve, non sono molto pratica con asp.net, ho qualche problema con un form.
Vi posto il codice del form
<formid="form1"runat="server"> <div> <asp:FormViewID="FormView1"runat="server"DataSourceID="ObjectDataSource1"DefaultMode="Insert"> <InsertItemTemplate> idRubrica: <asp:TextBoxID="idRubricaTextBox"runat="server"Text='<%# Bind("idRubrica") %>'> </asp:TextBox><br/> idUtente: <asp:TextBoxID="idUtenteTextBox"runat="server"Text='<%# Bind("idUtente") %>'> </asp:TextBox><br/> nomeAutore: <asp:TextBoxID="nomeAutoreTextBox"runat="server"Text='<%# Bind("nomeAutore") %>'> </asp:TextBox><br/> nomeRubrica: <asp:TextBoxID="nomeRubricaTextBox"runat="server"Text='<%# Bind("nomeRubrica") %>'> </asp:TextBox><br/> dataPubblicazione: <asp:TextBoxID="dataPubblicazioneTextBox"runat="server"Text='<%# Bind("dataPubblicazione") %>'> </asp:TextBox><br/> oraPubblicazione: <asp:TextBoxID="oraPubblicazioneTextBox"runat="server"Text='<%# Bind("oraPubblicazione") %>'> </asp:TextBox><br/> minutiPubblicazione: <asp:TextBoxID="minutiPubblicazioneTextBox"runat="server"Text='<%# Bind("minutiPubblicazione") %>'> </asp:TextBox><br/> qualificaAutore: <asp:TextBoxID="qualificaAutoreTextBox"runat="server"Text='<%# Bind("qualificaAutore") %>'> </asp:TextBox><br/> titoloArticolo: <asp:TextBoxID="titoloArticoloTextBox"runat="server"Text='<%# Bind("titoloArticolo") %>'> </asp:TextBox><br/> testo: <asp:TextBoxID="testoTextBox"runat="server"Text='<%# Bind("testo") %>'> </asp:TextBox><br/> link1: <asp:TextBoxID="link1TextBox"runat="server"Text='<%# Bind("link1") %>'> </asp:TextBox><br/> link2: <asp:TextBoxID="link2TextBox"runat="server"Text='<%# Bind("link2") %>'> </asp:TextBox><br/> testatina: <asp:TextBoxID="testatinaTextBox"runat="server"Text='<%# Bind("testatina") %>'> </asp:TextBox><br/> <asp:LinkButtonID="InsertButton"runat="server"CausesValidation="True"CommandName="Insert" Text="Inserisci"> </asp:LinkButton> <asp:LinkButtonID="InsertCancelButton"runat="server"CausesValidation="False"CommandName="Cancel" Text="Annulla"> </asp:LinkButton> </InsertItemTemplate> </asp:FormView> <asp:ObjectDataSourceID="ObjectDataSource1"runat="server"InsertMethod="Insert" OldValuesParameterFormatString="original_{0}"SelectMethod="GetData"TypeName="RubricheTableAdapters.RubricheTableAdapter"> <InsertParameters> <asp:ParameterName="idRubrica"Type="Int64"/> <asp:ParameterName="idUtente"Type="Int64"/> <asp:ParameterName="dataPubblicazione"Type="String"/> <asp:ParameterName="oraPubblicazione"Type="String"/> <asp:ParameterName="minutiPubblicazione"Type="String"/> <asp:ParameterName="nomeAutore"Type="String"/> <asp:ParameterName="qualificaAutore"Type="String"/> <asp:ParameterName="titoloArticolo"Type="String"/> <asp:ParameterName="testo"Type="String"/> <asp:ParameterName="link1"Type="String"/> <asp:ParameterName="link2"Type="String"/> <asp:ParameterName="testatina"Type="String"/> </InsertParameters> </asp:ObjectDataSource> </div> </form>
Questo il codice per la scrittura del database
ALTER PROCEDURE dbo.Rubriche_Insert ( @idUtente bigint, @dataPubblicazione nvarchar(50), @oraPubblicazione nvarchar(50), @minutiPubblicazione nvarchar(50), @nomeAutore nvarchar(50), @qualificaAutore nvarchar(50), @titoloArticolo nvarchar(50), @testo ntext, @link1 nvarchar(50), @link2 nvarchar(50), @testatina nvarchar(50) ) AS SET NOCOUNT OFF; INSERT INTO Rubriche (idUtente, dataPubblicazione, oraPubblicazione, minutiPubblicazione, nomeAutore, qualificaAutore, titoloArticolo, testo, link1, link2, testatina) VALUES (@idUtente,@dataPubblicazione,@oraPubblicazione,@minutiPubblicazione, @nomeAutore,@qualificaAutore,@titoloArticolo,@testo, @link1,@link2,@testatina)
e questo l'errore che viene restituito
Impossibile trovare un metodo non generico 'Insert' per ObjectDataSource 'ObjectDataSource1' che presenti parametri: idRubrica, idUtente, dataPubblicazione, oraPubblicazione, minutiPubblicazione, nomeAutore, qualificaAutore, titoloArticolo, testo, link1, link2, testatina, nomeRubrica.
Sapreste dirmi cosa manca?
-
Dove hai definito la funzione insert che fa l'inserimento? Dove lo hai scritto il codice sql?
-
Il codice sql si trova dentro una stored procedure.
Poi ho creato un table adapter che si richiama la procedura.
E poi l'ho agganciato al objetdatasource.
Ho fatto tutto con visual studio. Di mio non ho scritto una riga di codice (a parte quello sql per creare la SP) perché non sono molto pratica di c#
-
La insert in SQL che hai tu non ha il parametro idRubrica, quindi lui vede una funzione diversa e non trova quella dove c'è anche idRubrica.
-
Ok, il problema così è risolto.
Ora ne sopraggiunge un altro, forse più grave....
Per esigenze che non sto qui a spiegare devo lavorare nel seguente modo:
creare una tabella
creare stored procedure per insert, select, update;
creare tabel adapters che richiamano le varie tabelle;
creare i form view.E tutto funziona.
Ma quando devo aggiungere nuovi campi alle tabelle e di conseguenza modificare le stored procedure, come devo fare?
Io ho provato a fare le modifiche da direttamente sql ma quando lancio il form mi da i soliti errori che non trova i parametri.
Come devo fare?
-
Forse fai prima a cancellare la tabella e rifarla, oppure aggiungi i campi anche nel formview
-
Addirittura cancellare tutta la tabella e rifarla?
-
Non la tabella ma quella nella pagina aspx.
-
L'ho rifatta millevolte, ma non cambia nulla
-
devi riaggiornare anche il tableadapter
-
ti conviene usare una gridview con una query che seleziona tutti i campi e con la proprietà AutoGenerateColumn impostato a True, così, utilizzando una query che ad esempio fa un SELECT * FROM tabella, la grid si crea a runtime la sua struttura su quella della tabella del db.
-
Alla fine ho trovato il metodo.
Vado a creare le Stored Procedure direttamente dal Table Adapter e le modifico direttamente da lì. Così non ci sono più problemi di parametri sbagliati