DataGridView e chiavi primarie

mercoledì 06 dicembre 2006 - 17.01

bimbogino Profilo | Newbie

Ciao,
ho un DataGridView che dovrebbe gestire modifica, cancellazione ed inserimento di righe su una tabella (SqlServer).

Tre colonne di questa tabella sono impostate come primary key.

Vorrei che il DataGridView non consentisse la modifica dei valori delle tre colonne per le righe già presenti, ma che permettesse di inserirli quando viene aggiunta una nuova riga.

Purtoppo settando readonly=true per le tre colonne non riesco ad inserire nuove righe, mentre lasciando readonly=false il datagrid permette di modificare i valori nelle righe già presenti (e questo successivamente genera degli errori). Come posso fare?



grazie mille
--
BG



Qualche idea?

bimbogino Profilo | Newbie

A qualcuno gli viene in mente qualcosa?

pattinivale Profilo | Newbie

Hai provato ad utilizzare l'evento RowsAdded?
Catturano questo evento puoi gestire gli accessi al alle singole colonne.


Ciao
pattinivale

bimbogino Profilo | Newbie

Ad una prima prova (molto superficiale perché non ho tempo) mi sembra che RowsAdded non faccia al caso mio perché "spara" dopo che uno inizia ad editare la riga.
Per cui, nel caso limite in cui tutte le colonne sono chiavi, non verrebbe mai generato.

Una soluzione che invece sembra funzionare è utilizzare l'evento CellEnter; però non ne sono soddisfattisismo, per cui se qualcuno ha altri suggerimenti è il benvenuto.

In ogni caso qui c'è il mio codice (isChiave mi dice semplicemente se la colonna fa parte delle chiavi della tabella).


private void dataGridView_CellEnter(object sender, DataGridViewCellEventArgs e) { if(isChiave(e.ColumnIndex)) { DataGridViewRow dr = dataGridView.Rows[e.RowIndex]; dataGridView.CurrentCell.ReadOnly = !dr.IsNewRow; } }


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