Laden...

ComboBox im DataSet

Erstellt von MrMilk vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.492 Views
M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren
ComboBox im DataSet

verwendetes Datenbanksystem: MS SQL 2005

Hallo zusammen,

über den DataSet Designer greife ich auf eine Tabelle der Datenbank zu.

In einer Spalte möchte ich nun eine Combobox mit den Werten "gut", "schlecht" und "mittel" haben. Könnte ihr mir da weiter helfen, wie ich es schaffe, dass diese immer in der der aktiven Zelle ist?

Viele Grüße
MM

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo MrMilk,

für die Combobox gibt es die Eigenschaft "DataSource", in der Du festlegst, welche Datentabelle für das "Binding" herangezogen werden soll. Mit der Eigenschaft "DisplayMember" legst Du daraufhin dann die Spalte fest.

Siehe auch MSDN:
MSDN - ComboBox.DataSource
MSDN - ComboBox.DisplayMember

Alles aber Binding-Grundlagen, die nachzuschlagen wären (Gut, man sieht bei der Menge an Eigenschaften den Wald vor lauter Bäumen nicht mehr 😉

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren

Hallo norman_timo,

leider meine ich es genau anderes herum. In meinem Dataset möchte ich einer Spalte eine bestimmte auszwahl zuweisen.

Kannst du mir auch hier weiter helfen?

Viele Grüße
MM

1.200 Beiträge seit 2007
vor 15 Jahren

Warum würdest man sowas tun sollen? Hol dir halt einfach alle 3 Columns und stell dann im Programm nur eine da.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren

Warum würdest man sowas tun sollen?

Ich hole aus eienr Datenbank eine Tabelle per Dataset. Nun soll der Benutzer aber auch die Möglichkeit haben, neue Datensätze zu ändern bzw. neue anzulegen. In der Spalte XYZ soll es nun so sein, dass nur Werte aus der Menge A mit den Elementen B,C und D möglich sein soll.

Um nun Anaomalien zu vermeiden, habe ich mir überlegt, dass der Benutzer 'im DataGridView' welches über dein 'DataSet' gefüllt wird, von Anfang an nur die Werte B, C und D zur auswahl haben soll.

Leider verstehe ich jetzt deinen Ansatz nicht, kannst du ihn mir genauer erläutern?

Viele Grüße
MM

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo MrMilk,

ich bin auch der Meinung, wie GMLOD schon angedeutet hat. Schau, dass Du hier die 3. Normalform verwendest, indem Du die Auswahlmöglichkeit auslagerst und die Auswahl auf die Combobox reflektierst.

Um dann den einzelnen Wert im DataGrid abzuspeichern kannst Du dann die ID-Referenz auf die Auswahl in der DB ablegen. (Ich hoffe das war verständlich ausgedrückt?)

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren

Hallo norman_timo,

die dritte Normalform ist mir bekannt. Sie vermeidet transitive Abhängigkeiten. Allerdings hat die Spalte nichts mit Fremdschlüsseln oder ID's in irgendeiner weise zu tun.

Ich möchte einfach nur, das ich in der Tabelle zwischen den Werten "jung", "mittel" und "alt" auswählen kann.

Dieses sind statische Werte die auch nie geändert werden.

Viele Grüße
MM

1.200 Beiträge seit 2007
vor 15 Jahren

Ja, warum dann nicht einfach eine where-clause mit Parameter angeben für den Select vom TableAdapter?

Den Parameter kannst ja dann von einer beliebigen Quelle aus setzen. Z.B. von einer ComboBox aus oder aus einem Config-File.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

J
3.331 Beiträge seit 2006
vor 15 Jahren

Hallo,

um etwas konkreter zu werden:*Es gibt eine DataTable mit den eigentlich gewünschten Daten. *Es gibt eine weitere DataTable mit den Nachschlagewerten. *Beide werden über DataRelation (= ForeignKey) miteinander verknüpft. *Das DataGridView benutzt dann DataGridView: Master/Detail über ComboBox

Gruß Jürgen

PS. Du befindest Dich im falschen Unterforum: Das DataGridView gehört zu WinForms, nicht zu Datentechnologien.

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren

Wenn ich das in eine select abfrage lege, dann habe ich die Drop Down Liste nicht beim einfügen neuer daten.

1.200 Beiträge seit 2007
vor 15 Jahren

Was? Wenn die Werte eh statisch sind kannst sie ja einfach IRGENDWO reinschreiben, z.B. in eine ComboBox. Und zwar kannste dann auch nur die Werte da reinschreiben, die du dem Nutzer auch zugänglich machen willst.

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo MrMilk,

zur Not musst Du für die ComboBox das Ereignis bei Neuerstellung von Einträgen abfangen und dann per SQL die Anzeigewertetabelle erweitern und danach das Grid aktualisieren.

Ich denke so ganz einfach und komfortabel wird es nicht gehen.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren

Wieso immer ComboBox? Ich arbeite auf einem Datagridview.

1.200 Beiträge seit 2007
vor 15 Jahren

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo MrMilk,

???

-> Dein Zitat:

In einer Spalte möchte ich nun eine Combobox mit den Werten "gut", "schlecht" und "mittel" haben

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren

Entschuldigung, da habe ich mich sehr sehr schlecht ausgedrückt.

*bekomme_einen_roten_Kopf*

Ich möchte in jeder Zelle innerhalb der bestimmten Spalten eine "Art" ComboBox haben.

viele Grüße
MM

J
3.331 Beiträge seit 2006
vor 15 Jahren

... und dafür gibt es eben die DataGridViewComboBoxColumn; und eine Kurzanleitung habe ich oben angegeben; und alle Hinweise von norman_timo und GMLOD laufen auf das Gleiche hinaus. Jürgen

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo MrMilk,

ich verstehe nicht so ganz.

Ich vermute mal folgendes Glaskugelauspack (bin ja ein sehr geduldiger Mensch 😉:

  • Für jede Spalte sollen vordefinierte Werte verfügbar sein
  • Diese Werte sollen in einer ComboBox angezeigt werden
  • Es soll möglich sein, die verfügbaren Werte zu erweitern

-> also würde ich folgendes vorschlagen:

  • Definiere für jede Spalte eine eigene Tabelle, die alle möglichen Werte enthält
  • Definiere Deine Datentabelle, die in den Spaltenwerten die eine Referenz auf entsprechende Möglichkeitswerte-Tabelle hält
  • Für die Anzeige kannst Du problemlos die Lösung von juetho verwenden
  • Zum Erweitern der Werte würde ich vorschlagen, dass Du über ein Rechtsklick-Kontextmenü auf die Spalten eine neue Form aufmachst, die die zugehörige Möglichkeitswerte-Tabelle anzeigt und dort die Möglichkeit besteht diese Liste zu erweitern (SQL Standard-Adapter)
  • Beim Schließen der "neuen Möglichkeitswerte-Form" aktualisierst Du Dein Grid

Ich denke das ist wirklich die einfachste und praktikabelste Lösung (meiner Meinung nach).

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

M
MrMilk Themenstarter:in
75 Beiträge seit 2008
vor 15 Jahren

Hallo,

ich habe alles einmal überschlafen um nicht noch weiteren Unsinn zu posten.

@norman_timo:

Du hast den Nagel fast auf den Kopf getroffen. Am besten probiere ich es einmal ein so zu beschreiben.

Ich habe die Tabelle Auto mit den Merkmalen ID_Auto, Farbe,... und eben auch dem Merkmal 'Marke'.

Die Marke ist immer aus der Menge {"VW","BMW","Audi"}.

Jetzt soll beim anklicken einer Zelle (Welche zu der Spalte Marke) gehört, eine Aufklappliste erscheinen, wo ich immer nur zwischen diesen dreien wählen kann.

Wieso das ganze? In der Praxis wurde sich bei den Werten immer vertippt und ich möcht dieses so unterbinden.

Muss ich dafür nun auch eine extra Tabelle anlegen?
Bzw. gibt es eine Lösung ohne das neue anlegen?

Viele Grüße
MM