189 messaggi dal 03 ottobre 2006
Sto provando ad usare un ObjectDataSource per inserire un nuovo cliente ma uno dei campi del DB lo devo calcolare. ho fatto una Classe con variabili pubbliche che riflettono i campi della tabella cliente e il nuovo cliente è gestito dall'InsertTemplate di una FormView

<asp:ObjectDataSource ID="ODSClidet" runat="server"
UpdateMethod="UpdateCliente" InsertMethod="InsertCliente"
SelectMethod="GetClienteByNum" DeleteMethod="DeleteCli"
TypeName="GivSql.BLL.ClientiManager" DataObjectTypeName="GivSql.ObjectModel.Cliente" OnInserting="ODSClidet_Inserting"
OnDeleting="ODSClidet_Deleting">

Da notare che sto provando ad usare per la prima volta il "DataObjectTypeName" in modo da passare al metodo Insert un solo parametro formato dall'istanza dell'oggetto "cliente" che viene riempito automaticamente con i dati dal FormView

Ho pensato di usare l'evento OnInserting per calcolare uno dei parametri ma la seguente istruzione:
e.InputParameters["Numcli"] = newcli;
mi da il seguente errore:
"System.NotSupportedException: OrderedDictionary è di sola lettura e non può essere modificato"
In effetti InputParameters restituisce un System.Collections.OrderedDictionary
la cui proprietà isReadOnly è true!! Ma chi stabilisce il valore di questa proprietà? Probabilmente sbaglio metodo perchè dovrei agire sulla propietà "Numcli" dell'istanza della classe "Cliente" che devo passare al metodo Insert ma come posso fare?
Grazie
189 messaggi dal 03 ottobre 2006
Scrivo di nuovo perchè è il secondo problema consecutivo a cui non ottengo risposte. Se sbaglio qualcosa avvisatemi in modo che io possa correggermi. E' parecchio tempo ormai che mi rivolgo a questo ottimo forum e di solito lo faccio quando proprio non trovo risposte nelle varie documentazioni ma ripeto, se i quesiti hanno qualcosa che non va avvisatemi pure. Per aggiungere dettagli a quest'ultimo problema ho trovato questo ottimo link su MSDN
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.dataobjecttypename.aspx
che spiega il da farsi pecccato che non dicono che l'oggetto che viene passato per esempio in e.InputParameters dell'OnInsering ha il readonly=true dunque non è modificabile, a meno che voi non mi smentiate questa mia deduzione.
Se invece è così, vuol dire che i valori devo passarli proprio tutti da dentro la FormView dunque vi chiedo qual'è la sintassi per scrivere il bind nella text box che mostra il mio parametro mancante?

<asp:Textbox id="TBNumcli" runat="server" Text='<%# Bind(???????) %>' />

ovvero cosa metto al posto dei punti di domanda per riempire un parametro di nome Numcli con un valore calcolato in una funzione?
... Mi sa che questa non è chiara eh?
55 messaggi dal 17 giugno 2003
io uso l'evento OnItemUpdating del formview

protected void FormView1_OnItemUpdating(object sender, FormViewUpdateEventArgs e)

e poi con l'istruzione

e.NewValues["nomecampo"] = valore.ToString();

cambio il valore del campo desiderato, che deve comunque trovarsi nell'ObjectDataSource e quindi nel formview

spero di essere stato chiaro e di aiuto.
55 messaggi dal 17 giugno 2003
scusa quello che ho scritto prima vale per l'update per l'insert l'evento è OnItemInserting

protected void FormView1_OnItemInserting(object sender, FormViewInsertEventArgs e)

e.Values["nomecampo"] = valore.ToString();
189 messaggi dal 03 ottobre 2006
grazie 1000. Per la cronaca ho intercettato il FormView1_ItemCommand() in questo modo:

protected void FormView1_ItemCommand(object sender,FormViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "Insert":
((TextBox)(FormView1.FindControl("TBNcli"))).Text = Nuovocli();
break;
}

Però la tua soluzione mi sembra più comoda e pulita dato che l'inserting della Form accade prima dell'inserting dell'ObjectDataSource dunque dovrei riuscire a modificarne il valore.

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.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC