38 messaggi dal 02 settembre 2004
Salve a tutti
Ho un objectdatasource collegato ad un formview e i record bengono visualizzati correttamente.
Il problema è nell'update: il metodo di update accetta un oggetto come parametro, ma quando clicco su "update" mi viene visualizzato "Object of Type System.Int32 cannot be converted to Type System.String".
Anche se gli metto negli UpdateParameters il parametro di tipo Object (che non viene inserito automaticamente da visual studio) da errore lo stesso.

ecco l'objectdatasource

          <asp:ObjectDataSource ID="AgenteDataSource" runat="server" DataObjectTypeName="Reminder.Agente"
            DeleteMethod="Delete" 
            InsertMethod="Insert" 
            SelectMethod="GetDataTable" 
            TypeName="Reminder.Agente"
            OnSelecting="AgenteDataSource_OnSelecting"
            UpdateMethod="Update">
            <SelectParameters>
              <asp:Parameter Name="vId" Type="string" />
            </SelectParameters>

            <DeleteParameters>
              <asp:Parameter Name="vId" Type="String" />
            </DeleteParameters>
          </asp:ObjectDataSource>


ecco il metodo di update
    public void Update(Agente _A)
    {
      MySqlCommand cmd = new MySqlCommand();
      if (cnn.ConnectionString == string.Empty)
        cnn.ConnectionString = ConfigurationManager.ConnectionStrings["reminder_local"].ToString();
      cmd.Connection = cnn;
      cmd.CommandType = CommandType.StoredProcedure;
      cmd.Parameters.Add(new MySqlParameter("P_ID", _A.ID));
      cmd.Parameters.Add(new MySqlParameter("P_login", _A.Login));
      cmd.Parameters.Add(new MySqlParameter("P_nome", _A.Nome));
      cmd.Parameters.Add(new MySqlParameter("P_cognome", _A.Cognome));
      cmd.Parameters.Add(new MySqlParameter("P_telefono", _A.Telefono));
      cmd.Parameters.Add(new MySqlParameter("P_annullato", _A.Annullato));
      cmd.CommandText = "spUpdateAgente";

      try
      {
        if (cnn.State == ConnectionState.Closed)
          cnn.Open();
        cmd.ExecuteNonQuery();
        cnn.Close();
      }
      catch (MySqlException Exception)
      { }
    }
Purtroppo non conosco l'utilizzo delle storedprocedure con mysql anche se cosi a naso credo che ci sia un problema sul passaggio dei parametri alla stored stessa. ?P_ID o @P_ID.

cmd.Parameters.Add(new MySqlParameter("?P_ID", _A.ID));

o

cmd.Parameters.Add(new MySqlParameter("@P_ID", _A.ID));

Dai anche un occhio all'overload di MySqlParameter dovresti avere un mysqdbtype o qualcosa del genere.

Fabrizio Canevali
1.508 messaggi dal 27 dicembre 2005
in mysql se ricordo bene i parametri vanno passati con ?.
38 messaggi dal 02 settembre 2004
Purtroppo  non è un problema di passaggio parametri in quanto in altri punti dello stesso programma li passo allo stesso modo e funziona.
Forse il punto è che la void Update accetta un oggetto e non tutta la serie di parametri, ho letto su Msdn ma questo caso non viene spiegato accidenti sono bloccato da ieri
38 messaggi dal 02 settembre 2004
ragazzi adesso non da + l'errore non riesco a capire cosa ho fatto di diverso ma l'importante è che vada  il codice che ho postato prima non è variato il problema era altrove ho ritoccato qualcosa nei template del formview forse era quello - per quanto riguarda il passaggio di oggetti l'importante è chesia specificata la proprietà DataObjectTypeName dell'ObjectDataSource, non servono altri parametri (se ce ne sono altri nella void ovviamente occorre specificarli)

ciao e grazie

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.