Autor Beitrag
3Huete
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 14.03.08 15:55 
Hallo,

bin ziemlich neu in C# und der Datenbankprogrammierung.

Allerdings kommt man ja mit Hilfe der Designer des VS2005 auch ohne tiefgreifende Kenntnisse recht weit. Zum DataGridView habe jetzt einige Fragen. Hab schon einiges gelesen aber keine Lösung gefunden.

1. Wie kann man in einem DGV bestimmte Spalten sperren, so das diese zwar angezeigt aber keinen Focus erhalten können?
2. Wie kann man die vertikale Bildlaufleiste so einstellen, dass sie auch dann - deaktiviert - angezeigt wird, wenn nicht der gesamte Bereich des DGV mit Zeilen gefüllt ist?
3. Wie kann man mit Hilfe eines Buttons innerhalb des DGV navigieren? So etwas wie DataGridView.home oder .nextRecord konnte ich nicht finden.

Danke und Gruß

Moderiert von user profile iconChristian S.: Überflüssige Zeilenumbrüche entfernt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 14.03.08 16:56 
Hallo,
user profile icon3Huete hat folgendes geschrieben:
bin ziemlich neu in C# und der Datenbankprogrammierung. Allerdings kommt man ja mit Hilfe der Designer des VS2005 auch ohne tiefgreifende Kenntnisse recht weit.

Ich möchte dennoch vor diesem Vorgehen warnen: Ohne Verständnis dafür, was "im Hintergrund" passiert, bleibt man viel zu oft hängen. Zumindest empfehle ich dringend, die Designer.cs zur Kontrolle durchzulesen.

Vor allem solltest Du beachten, dass zwischen der Datenmenge im Arbeitsspeicher (DataSet/DataTable) und der visuellen Verbindung (DataGridView) streng zu unterscheiden ist. Manipulationen an Daten z.B. sollten vorzugsweise in einer DataTable (nicht im DGV) vorgenommen werden.

user profile icon3Huete hat folgendes geschrieben:
1. Wie kann man in einem DGV bestimmte Spalten sperren, so das diese zwar angezeigt aber keinen Focus erhalten können?

Das geht über DataTable.Columns["Feldname"].ReadOnly und notfalls über DataGridView.Columns["Feldname"].ReadOnly.

user profile icon3Huete hat folgendes geschrieben:
2. Wie kann man die vertikale Bildlaufleiste so einstellen,
dass sie auch dann - deaktiviert - angezeigt wird, wenn nicht der gesamte Bereich des DGV mit Zeilen gefüllt ist?

Das geht offensichtlich nicht:
SDK-Doku hat folgendes geschrieben:
Unabhängig vom Wert dieser Eigenschaft werden Bildlaufleisten nur bei Bedarf angezeigt. Verhindern Sie mit dieser Eigenschaft das Anzeigen von Bildlaufleisten.


user profile icon3Huete hat folgendes geschrieben:
3. Wie kann man mit Hilfe eines Buttons innerhalb des DGV navigieren? So etwas wie DataGridView.home oder .nextRecord konnte ich nicht finden.

Das hängt mit meiner grundsätzlichen Bemerkung zusammen. Die Basis der Daten ist eine Datenmenge, keine Liste von einzelnen Zeilen. Zum Navigieren musst Du zusätzlich einen BindingNavigator o.ä. einschalten.

Viel Erfolg! Jürgen
3Huete Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 15.03.08 13:55 
user profile iconJüTho hat folgendes geschrieben:

Ich möchte dennoch vor diesem Vorgehen warnen: Ohne Verständnis dafür, was "im Hintergrund" passiert, bleibt man viel zu oft hängen. Zumindest empfehle ich dringend, die Designer.cs zur Kontrolle durchzulesen.?

Keine Bange, ich benutze zwar den Designer, bekomme aber alles, was ich bisher gemacht habe auch gänzlich ohne diese Unterstützung hin. :-)
user profile iconJüTho hat folgendes geschrieben:

Das geht über DataTable.Columns["Feldname"].ReadOnly und notfalls über DataGridView.Columns["Feldname"].ReadOnly.?

Das meinte ich nicht. Ich habe das ganze Grid ohnehin readonly gesetzt. Es geht darum, das ich bestimmte Spalten keinen Focus zukommen lassen will. Etwa in der Art SpaltenName.Tabstop = False. Oder so ähnlich halt.
user profile iconJüTho hat folgendes geschrieben:

Das geht offensichtlich nicht:
Unabhängig vom Wert dieser Eigenschaft werden Bildlaufleisten nur bei Bedarf angezeigt. Verhindern Sie mit dieser Eigenschaft das Anzeigen von Bildlaufleisten.

...Schnief :cry: aufgeschoben ist nicht aufgehoben... 8)
user profile iconJüTho hat folgendes geschrieben:

Das hängt mit meiner grundsätzlichen Bemerkung zusammen. Die Basis der Daten ist eine Datenmenge, keine Liste von einzelnen Zeilen. Zum Navigieren musst Du zusätzlich einen BindingNavigator o.ä. einschalten.

Das ist doof. :-( Den BindingNavigator will ich erst mal nicht benutzen. Kann man sich nicht den Quellcode für dieses Teil irgendwo anschauen? Da wird sicher drin stehen, wie's geht. :-)
Gruß
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 15.03.08 15:20 
user profile icon3Huete hat folgendes geschrieben:
Den BindingNavigator will ich erst mal nicht benutzen. Kann man sich nicht den Quellcode für dieses Teil irgendwo anschauen? Da wird sicher drin stehen, wie's geht.

Nun ja, wenn es Dir wichtiger ist zu wissen, wie es gemacht wird, als es fertig zu nutzen...

MS ist erst dabei, den Code zu veröffentlichen. Zurzeit muss man sich alles selbst über Reflection zusammensuchen, z.B. mit Roeder's Reflector. Manche Teile wurden bereits von Koders analysiert und veröffentlicht; aber die Suche nach "BindingNavigator.cs" bringt dort keinen Treffer.

Jürgen
3Huete Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 15.03.08 17:13 
user profile iconJüTho hat folgendes geschrieben:
Nun ja, wenn es Dir wichtiger ist zu wissen, wie es gemacht wird, als es fertig zu nutzen...
Jürgen

Nee, so ist das natürlich nicht. Würde schon was Fertiges benutzen, nur der Bindingnavigator händelt die Datenbearbeitung nicht so, wie ich es gerne hätte, nämlich jeden Vorgang mit eigenem Dialog. :D Und zu den TabStops, keine Idee?

Gruß DreiHüte