Ciao ragazzi,
come da oggetto ho un problema con il recuperare il valore di un combobox.
Premetto che sto utilizzando delle dll che ho acquistato che lavorano integrando ajax, quindi il codice non è tutto farina del mio sacco, e per questo motivo ho delle difficoltà nelle modifiche.
Spero possiate aiutarmi ugualmente.
Vi spiego il problema.
La colonna del datagrid viene caricata in questa maniera
Dove HTML è il nome della categoria di appartenenza del prodottocodice:Dim oCol2 As Column = New Column() oCol2.DataField = "HTML" oCol2.Visible = False oCol2.HeaderText = "id tree" oCol2.Width = "50" oCol2.TemplateSettings.RowEditTemplateControlId = "ob_cbo1Textbox" oCol2.TemplateSettings.RowEditTemplateControlPropertyName = "value"
In fase di modifica record viene richiamata una funzione che al suo interno ha il caricamento delle altre categorie possibili:
Come potete vedere assegno come value l'ID e come text l'HTML.codice:MySQL = "SELECT ID, HTML FROM TREE WHERE elimina_tree = False ORDER BY HTML ASC" MyDA = New Data.OleDb.OleDbDataAdapter(MySQL, myConn) MyDS = New DataSet MyDA.Fill(MyDS, "TREE") Dim dt As New DataTable dt.Columns.Add("ID", GetType(System.Int32)) dt.Columns.Add("HTML", GetType(System.String)) ' Populate the DataTable to bind to the Combobox. ' Dim drDSRow As DataRow Dim drNewRow As DataRow For Each drDSRow In MyDS.Tables("TREE").Rows() drNewRow = dt.NewRow() drNewRow("ID") = CType(drDSRow("ID"), Integer) drNewRow("HTML") = drDSRow("HTML") dt.Rows.Add(drNewRow) Next With cbo1 .DataSource = dt .DataField_Text = "HTML" .DataField_Value = "ID" .DataBind() End With
Quando vado a salvare i dati richiamo l'update del datagrid, e inparticolare con le query parametriche il valore
myComm.Parameters.Add("@HTML", OleDbType.VarChar).Value = e.Record("HTML")
Se salvo però mi restituisce come errore che i tipi di dati non sono corrispondenti nell'espressione criterio.
Questo perchè il campo ID che devo aggiornare è un campo numerico, e lui mi recupera sempre e solo il DataField_Text e non il DataField_Value.
Facendo infatti delle prove dove nel text è mostrato l'id riesco a fare l'aggiornamento, ma chiaramente non mi va bene come soluzione perchè deve essere visualizzato il nome della categoria e non il valore.
L'altra prova fatta che miha fatto capire che lui recupera il text e non il value l'ho avuta modificando il parametro così:
myComm.Parameters.Add("@HTML", OleDbType.Integer).Value = e.Record("HTML")
cioè mettendo integer invece di varchar.
In questo caso l'errore che ottengo è il seguente:
Impossibile convertire il valore del parametro da un String a un Int32
Lo so che è un pò difficile seguirmi visto l'utilizzo di altre dll, ma spero possiate darmi almeno qualche aiuto o indicazione per capire quale è il mio errore.
Grazie mille.
Guido

Rispondi quotando
