Errore nel controllo CheckBox

lunedì 04 maggio 2015 - 00.50
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  Windows 7  |  Visual Studio 2005  |  SQL Server 2005  |  Access (.mdb)  |  Office 2007  |  Internet explorer 8.0  |  VBScript  |  HTML 5  |  Crystal Reports 8.5

mauroschivalocchi Profilo | Newbie

dopo due anni di lavoro credo di aver scoperto un grave malfunzionamento nel Controllo <BindingSource> di VisualStudio 2005.

Per una sicura conferma ho implementato il programma di prova esposto di seguito da cui è possibile rilevare dove e come si verifica.
La finestra di DataEntry è composta da una Form contenente:
• 3 controlli TextBox per la visualizzazione e inserimento dei dati
• 1 controllo CheckBox per impostare lo stato di sospensione dei record
• 1 controllo DataGridView per visualizzare la lista dei record
• 1 controllo BindingNavigator per operare la navigazione tra i record e i comandi di Inserimento, Modifica e Cancellazione dei dati
• 1 controllo BindingSource per gestire il contenuto della Tabella



Il programma è volutamente semplificato in modo da lasciare tutta la gestione della procedura ai due controlli BindingSource e BindingNavigator debitamente collegati.
Il controllo DataGridView è stato utilizzato solamente per visualizzare il risultato delle varie operazioni.
I pulsanti standard del BindingNavigator controllano l'Inserimento o la Cancellazione di una riga.

La riga di programma evidenziata in giallo è causa del malfunzionamento.


Public Class Form6 Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\database\Vendite.mdb" Dim cn As OleDb.OleDbConnection ' Connessione Dim ds As DataSet ' Data Set Dim da As OleDb.OleDbDataAdapter ' DataAdapter Sub New() ' Chiamata richiesta da Progettazione Windows Form. InitializeComponent() ' Aggiungere le eventuali istruzioni di inizializzazione ' dopo la chiamata a InitializeComponent(). ds = New da = New OleDb.OleDbDataAdapter("SELECT * FROM Prodotti", strConn) da.Fill(ds, "Prodotti") End Sub Private Sub Form6_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' collega binding al dataset sulla tabella Prodotti With BindingSource .DataSource = ds.Tables("Prodotti") .Sort = "NomeProdotto ASC" End With txtId.DataBindings.Add("Text", BindingSource, "IDProdotto") txtProdotto.DataBindings.Add("Text", BindingSource, "NomeProdotto") txtConfezione.DataBindings.Add("Text", BindingSource, "QuantitàPerUnità") txtPrezzo.DataBindings.Add("InputText", BindingSource, "PrezzoUnitario") chkSospeso.DataBindings.Add("Checked", BindingSource, "Sospeso") ' Collega Navigatore Utenti BindingNavigator.BindingSource = BindingSource ' Collega DataGrid With DataGridView .DataSource = BindingSource .AllowUserToAddRows = False .AllowUserToDeleteRows = False .AllowUserToOrderColumns = False .AllowUserToResizeColumns = False .AllowUserToResizeRows = False .ReadOnly = True .RowHeadersVisible = False ' MODALITA' DI SELEZIONE .SelectionMode = DataGridViewSelectionMode.FullRowSelect .MultiSelect = False ' LAYOUT .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None With .RowTemplate .Height = 18 .MinimumHeight = 18 .Resizable = DataGridViewTriState.False End With .Columns("IDProdotto").Visible = False .Columns("IDFornitore").Visible = False .Columns("IDCategoria").Visible = False .Columns("Scorte").Visible = False .Columns("QuantitàOrdinata").Visible = False .Columns("LivelloDiRiordino").Visible = False End With End Sub End Class

Collegando in Binding il controllo CheckBox si vuole poter inserire o meno un flag il cui scopo è quello di evidenziare lo stato (Sospeso/Attivo) del prodotto relativo.
• Con la suddetta riga esclusa (Commentata) gli Inserimenti di nuove righe vanno perfettamente a buon fine (ad ogni pressione sul tasto il cursore del DataGridView si sposta correttamente sul nuovo record inserito all'ultima riga e trasferisce il contenuto di questa riga nei relativi controlli collegati. Inserendo i nuovi dati nei controlli TextBox vengono correttamente inseriti nella nuova riga secondo le specifiche dell'ordinamento.
• Con la suddetta riga inserita, la pressione sul tasto lascia il cursore del DataGridView nella posizione in cui si trova e tutti i nuovi dati eventualmente inseriti sovrascrivono i dati della posizione corrente.
Dopo svariate prove, ho potuto constatare che solo i controlli CheckBox e OptionBox provocano questo malfunzionamento quando collegati in Binding da programma.

P.S. Nelle guide di Visual Studio non ho trovato nessuna specifica in tal senso.

Gluck74 Profilo | Guru

Ciao,
purtroppo non si vede la riga gialla.... presumo sia questa:

chkSospeso.DataBindings.Add("Checked", BindingSource, "Sospeso")

Due domande:
quando dici "premendo il pulsante..." di quale pulsante parli?
sul database, il campo "Sospeso" cosa è?

____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5