Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
DataGridView - Einzelne Spalten readonly=false setzen
blureg
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

DataGridView - Einzelne Spalten readonly=false setzen

beantworten | zitieren | melden

Hallo,

mein Programm holt sich Daten aus einer DB und speichert diese in einer DataTable dt ab. Visualisiert wird diese durch Setzten der Eigenschaft DataSource in einem DataGridView.

datagridview1.DataSource = dt;

Für diese Spalten soll der Anwender und ausschließlich Leserechte haben. Also,

datagridview1.readonly = true;

Nun sollen aber, nachdem die Tabelle im DataGridView dargestellt wurde vom Anwender noch Spalten hinzufügbar sein. Diese sollen dann beschreibar sein.

datagridview1.Columns.Add("x","x_name");
datagridview1.Columns["x"].readonly = false;

Allerdings wird die letzte Anweisung vom Compiler anscheinend ignoriert (beim debuggen bleibt true) und die Spalte "x_name" wird angezeigt, ist aber nicht beschreibar.

Hat jemand eine Idee wie man das realisiert (oder wo mein Fehler liegt;-))?

Grüße und Danke
private Nachricht | Beiträge des Benutzers
BennyP
myCSharp.de - Member



Dabei seit:
Beiträge: 53
Herkunft: Lübeck

beantworten | zitieren | melden

Hallo,

Du musst jede Spalte einzeln auf ReadOnly=true setzen. Wenn du das gesamte DataGridView auf ReadOnly setzt dann überschreibt diese Einstellung alle Einstellungen der Spalten.
private Nachricht | Beiträge des Benutzers
blureg
myCSharp.de - Member



Dabei seit:
Beiträge: 7

Themenstarter:

beantworten | zitieren | melden

Die Einstellung ist für das "start datagridview" readonly = true gesetzt. Später wird eine Spalte hinzugefügt und die soll dann readonly= false gesetzt sein (der Rest soll weiterhin readonly = true sein). Das funktionniert bei mir nicht.
Bizarrerweise geht es aber umgekehrt, dass heißt ich setze das gesammte Datagridview mit

datagridview1.readonly = false;

und eine später hinzugefügte Spalte x mit

datagridview1.Columns["x"].readonly = true;

Andersrum funktionniert es unerfindlichen Grund nicht.
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.996

beantworten | zitieren | melden

Das sind keine unerfindlichen gründe.

Es ist genau so spezifiziert.

Es nutzt Dir ja auch nichts, wenn Du die Erlaubnis hast eine Tür in einem
Haus zu öffnen, wenn Du nicht ins Haus darfst.
private Nachricht | Beiträge des Benutzers
Vassili
myCSharp.de - Member

Avatar #avatar-2291.jpg


Dabei seit:
Beiträge: 187
Herkunft: Essen

beantworten | zitieren | melden

du musst wissen, dass das readonly des datagridviews in einer höheren ebene liegt als die columns. Sprich: Das ReadOnly des DataGridViews hat eine höhere Priorität als das ReadOnly von DataGridViewColumns.

Ist ReadOnly von DataGridView = true sind alle darunterliegenden objekte auch readonly
ist aber readonly von DataGridView = false gelten die ReadOnly eigenschaften der darunterliegenden Objekte.

Sobald bei einem Objekt ReadOnly = true ist, sind alle darunterliegenden Objekte automatisch auch ReadOnly.

Das selbe hast du auch z.B. bei Panels und der Enabled Eigenschaft.

Füg mal in einer Form ein Panel hinzu und in setze in diesem Panel ein Button. Dann geh mal folgende Konstelationen durch:
Panel.Enabled = true, Button.Enabled = true <-- Der Button wird aktiviert sein
Panel.Enabled = true, Button.Enabled = false <-- Button ist nicht aktiviert
Panel.Enabled = false, Button.Enabled = true <-- Button ist nicht aktiviert
Panel.Enabled = false, Button.Enabled = false <-- Button ist nicht aktiviert

Der Grund dafür ist der, dass die Enabled Eigenschaft des Panels eine höhere Priorität hat als die des Buttons. Genauso wie beim DataGridView und der ReadOnly Eigenschaft
private Nachricht | Beiträge des Benutzers