Ciao a tutti, sto realizzando un progetto in Vb.Net.Una anagrafica operatori. Ho usato il databindings sui controlli, un po per velocità, un po per curiosità. Mma devo dire che nn mi sto trovando per nulla bene. In particolare non va il metodo update.
il dataset su cui si appoggiano i controlli viene popolato in questo modo:
codice:
Try
            Dim strCodUt, strSqlL As String
            strCodUt = dbGridOperatori.Item(dbGridOperatori.CurrentRowIndex, 0)
            strSqlL = "SELECT * FROM OPERATORI WHERE CODOP = '" & strCodUt & "'"
            sqlAdapter.SelectCommand = New SqlCommand(strSqlL, sqlConn)
            Dim cmdSql As New SqlCommandBuilder(sqlAdapter)
            sqlAdapter.InsertCommand = cmdSql.GetInsertCommand
            sqlAdapter.DeleteCommand = cmdSql.GetDeleteCommand
            sqlAdapter.UpdateCommand = cmdSql.GetUpdateCommand
            DsOperatori1.Clear()
            sqlAdapter.Fill(DsOperatori1, "OPERATORI")
            gestoreImg(txtStrPath.Text)
        Catch ex As Exception
            RaiseEvent Errore(Me.Text, ex)
        End Try
dove dbGrid è una tabella con la lista degli utenti. Il dataset viene riempito in modo corretto,
e scrivendo all'interno dei controlli il dataset viene modificato (scrivo su un txt 'intero ds per controllo)
qui chiamo i metodo update
codice:
Dim i, j As Integer
        Dim row As DataRow
        Dim newRow(16) As Object
        Dim str As String

        For Each row In DsOperatori1.Tables("OPERATORI").Rows
            str = str & j.ToString & ": "
            For i = 0 To 16
                str = str & " " & i.ToString & ":" & row.Item(i) & " stato: " & row.RowState.ToString & vbCrLf
            Next
            str = str & vbCrLf
            j = j + 1
        Next
        MsgBox("dataset: " & vbCrLf & str)
        Try

            sqlConn.Open()
            DsOperatori1.CaseSensitive = True
            i = sqlAdapter.Update(DsOperatori1.Tables("OPERATORI"))
            MsgBox("aggiornati " & i & " record")
            sqlConn.Close()
        Catch ex As Exception
            RaiseEvent Errore(Me.Text, ex)
            If sqlConn.State <> ConnectionState.Closed Then
                sqlConn.Close()
            End If
        End Try
tutte le colonne del ds hanno lo stato unchanged anke se sono effettivamente cambiate. Come posso fare?
questo è il ds:
codice:
<?xml version="1.0" standalone="yes" ?>
<xs:schema id="dsOperatori" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
	<xs:element name="dsOperatori" msdata:IsDataSet="true" msdata:Locale="it-IT">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="OPERATORI">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="CODOP" type="xs:string" minOccurs="0" />
							<xs:element name="NOME" type="xs:string" minOccurs="0" />
							<xs:element name="CODREP" type="xs:string" minOccurs="0" />
							<xs:element name="DATAASSUNZIONE" type="xs:dateTime" minOccurs="0" />
							<xs:element name="DATAFINERAPP" type="xs:dateTime" minOccurs="0" />
							<xs:element name="CODOPALT" type="xs:string" minOccurs="0" />
							<xs:element name="CODQUAL" type="xs:string" minOccurs="0" />
							<xs:element name="CODTURNAZ" type="xs:string" minOccurs="0" />
							<xs:element name="FLGTRASM" type="xs:boolean" minOccurs="0" />
							<xs:element name="FLGTRASMP" type="xs:boolean" minOccurs="0" />
							<xs:element name="DATAINS" type="xs:dateTime" minOccurs="0" />
							<xs:element name="DATAMOD" type="xs:dateTime" minOccurs="0" />
							<xs:element name="GI_TOLLBEF" type="xs:float" minOccurs="0" />
							<xs:element name="GI_TOLLAFT" type="xs:float" minOccurs="0" />
							<xs:element name="GI_TIPOCTR" type="xs:float" minOccurs="0" />
							<xs:element name="ORGANIZ" type="xs:string" minOccurs="0" />
							<xs:element name="GI_PATHFOTO" type="xs:string" minOccurs="0" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:complexType>
	</xs:element>
</xs:schema>