23 messaggi dal 07 agosto 2007
ciao ragazzi
Ho un gridview.qui sotto c'è la classe che gestisce l'evento di modifica dei record (lo so che è possibile impostare le operazioni di SELECT,UPDATE,DELETE e INSERT con il wizard del gridview,c'ho provato e funziona.. ma mi serve di farlo così,purtroppo!!)

protected void RowUp(object sender, GridViewUpdateEventArgs e)
string sql = "UPDATE tabella1 SET ID = ?, Nome = ?, Indirizzo = ?, Telefono = ? WHERE (ID = ?)";

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("Database4.mdb");

conn = new OleDbConnection(strConn);

cmd = new OleDbCommand(sql,conn);

try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception exe)
{
Label1.Text = exe.Message;
}

mi restituisce il seguente errore

OledbConection Exeption
Nessun valore specificato per alcuni parametri necessari.

sono consapevole che dovrei specificare tali valori, ma non so come!!!
492 messaggi dal 08 gennaio 2007
con sqlserver la insert dovresti farla così

string updateQuery = "UPDATE [Liste] SET [ProprietarioLista] = @ProprietarioLista, [NomeLista] = @NomeLista, [CorpoLista] = @CorpoLista WHERE [IdLista] = @original_IdLista";

dove tra le quadre ci sono i campi da aggiornare e i parametri sono preceduti da @

poi chiaramente nel command devi inserire i parametri associati ai valori appropriati


using(OleDbConnection c=new OleDbConnection("blablabla")
{
OleDbCommand com=new OleDbCommand();
com.CommandText=updateQuery;
OleDbParameter p1=new OleDbParameter("@ProoprietarioLista",valoreAppropriato);
// ... altri parametri come sopra come ti serve
com.Parameters.Add(p1);
// poi quando hai inserito tutti i parametri continui come facevi prima
}

controlla solo il formato della query sia adatto a OleDb che io non conosco, ma x me é =
ciao
23 messaggi dal 07 agosto 2007
con oledb il formato della query è leggermente diverso:
string sql = "UPDATE tabella1 SET Nome = ?, Indirizzo = ?, Telefono = ? WHERE (ID = ?)";
come vedi al posto di @nomeparametro c'è "?".

mentre nel command i parametri li inserisci in qusto modo
OleDbParameter Nome = new OleDbParameter("?", valoreparametro);
UpCommand.Parameters.Add(Nome);


il problema adesso è che valoreparametro sono costretto ad inserirlo manualmente, per esempio:

OleDbParameter Nome = new OleDbParameter("?", "Gino");
UpCommand.Parameters.Add(Nome);

invece vorrei che sia quello letto nel corrispondente record del gridview.
se riesco a risolvere sta cosa festeggio un pochino
492 messaggi dal 08 gennaio 2007
Non puoi leggere il campo dalla cella della Grid?
tipo:
string gino= miaGrid.Rows[indice1].Cells[indice2].Text;
quindi:
OleDbParameter Nome = new OleDbParameter("?", gino);
Non ho capito come al solito, o intendevi una cosa così?
ciao
23 messaggi dal 07 agosto 2007
Ho provato a scrivere
string gino= miaGrid.Rows[indice1].Cells[indice2].Text;
ma mi restituisce una stringa vuota (e non certo quello che c'è scritto nel record!!).

nella precedente versione di ASP.NET come veniva gestito l'evento di modifica dei dati di un datagrid?

ciao
492 messaggi dal 08 gennaio 2007
Magari prova a usare qualche variabile a livello di form in cui butti gli indici e metti qualche break nell' evento in cui vai a leggere dalla grid, se leggi testo dalla grid e trovi vuoto magari ha già fatto il bind, ma non il rendering, in quale momento vai a leggere? prima o dopo l'update?
Se poi non hai configurato il datasource per le altre operazioni oltre alla select con il wizard, vai a vederti nelle property del datasource come è settata la UpdateQuery e i relativi parametri, forse il problema è lì.

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.