none
DataGridView Zeilen einfügen ? RRS feed

  • Allgemeine Diskussion

  • Hallo,

    folgendes Problem:

    ich definiere 4 Spalten in ein dgv mit bestimmten Eigenschaften per SourceCode und versuche später diese zu bearbeiten.

    Wenn ich eine Abfrage mit diesen 4 Spalten über MySql schicke und so dgv fülle, sind dann die definierten 4Spalten+4Spalten aus der Abfrage gefüllt (mit 8 Spalten) dgv.DataSource = DataTable(MySql-Abfrage);

    Frage ?:

    wie kann ich dann mit dgv.DataSource = DataTable(MySql-Abfrage); dgv füllen und die 4 def. Eigenschaften behalten ohne 8 Spalten zu bekommen.

    MFG


    Freitag, 7. Juni 2013 06:12

Alle Antworten

  • Hallo, setze die AutoGenerateColumns-Eigenschaft auf False:
    dataGridView1.AutoGenerateColumns = false;
    Diese Eigenschaft gibt es bei mir seltsamer Weise nicht im Eigenschaftenfenster, sondern nur im Codebehind.

    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    Freitag, 7. Juni 2013 07:10
    Moderator
  • Hallo,

    jetzt liefert er zumindest die Zeilen/Spelten aber alle Zellen sind leer.

    MFG

    Freitag, 7. Juni 2013 08:35
  • Hi,
    wenn die Zeilen vorhanden sind, aber nichts angezeigt wird, dann passt die Bindung nicht, d.h., es werden die falschen Eigenschaftsnamen gebunden.
     
    --
    Peter Fleischer
    Freitag, 7. Juni 2013 09:12
  • Hallo,

    ich habe exakt die def SpaltenNamen verglichen und in die SQL-Abfrage gesetzt aber es kommen exakt die Zeilen/Spalten Anzahl ohne Inhalt.

    MFG

    Freitag, 7. Juni 2013 11:48
  • Hi,
    kannst Du das etwas genauer spezifizieren?
     
    Fehlen die Spalten?
     
    Fehlen die Kopfbeschriftungen in den Spalten (wenn diese vorhanden sind)?
     
    Fehlen die Zeilen?
     
    Fehlen die Zellinhalte (wenn die Zeilen vorhanden sind)?
     
    Wie sieht die Deklaration einer Spalte aus?
     
    Von welchem Typ ist die gebundene Datenquelle?
     
    Welche Eigenschaften haben die Datenobjekte der gebundenen Datenquelle?
     
    --
    Peter Fleischer
    Freitag, 7. Juni 2013 12:22
  • hallo, so sieht mein Code aus:

    dgv.AutoGenerateColumns = false;
    dgv.ColumnCount = 1;
    dgv.Columns[0].Name = "SysNr";
    dgv.ColumnCount = 2;
    dgv.Columns[1].Name = "Name";
    dgv.ColumnCount = 3;
    dgv.Columns[2].Name = "Kommentar";
    dgv.ColumnCount = 4;
    dgv.Columns[3].Name = "HK_ID";

    dgv.DataSource = DataTable("SELECT SysNr, Name, Kommentar, HK_ID From tbl") // OK

    Typen: varchar(20) SysNr, varchar(10) Name, varchar(40) Kommentar, int(10) HK_ID.

    MFG

    Freitag, 7. Juni 2013 12:52
  • Hallo ati.sah,

    das DataGridView hat drei mögliche Modi: ungebunden, an Daten gebunden und virtuell. Die Modi können nicht miteinander kombiniert werden.

    Das Setzen von ColumnCount z.B. ist nur im ungebundenen Modus möglich, ein Modus in dem Du die Zelleninhalte quasi manuell setzt.

    Das Setzen der Datenquelle ist hingegen im gebundenen Modus möglich.

    Allerdings dürfte dein obiger Code so nicht kompilierbar sein, denn da fehlt ein new vor DataTable.

    Und auch mit dem new bist Du nicht viel weiter, denn der Konstruktor von DataTable nimmt zwar ein String-Argument an, aber nur um der Tabelle einen Namen zu geben.

    Ich denke deshalb, es ist besser, wenn Du dich etwas in die Materie einliest, bevor Du mit dem Code loslegst.

    Hier ein möglicher Einstiegspunkt:
    Anzeigen von Daten im DataGridView-Steuerelement in Windows Forms

    Gruß
    Marcel

    Freitag, 7. Juni 2013 13:13
    Moderator
  • Hallo Herr Marcel,

    wie ist dann "dgv.AutoGenerateColumns = false;" zu verstehen, wenn ich manuell die Spalten definiere und dann an die gebundene Daten zuweise. Wenn ich Spaltennamen und dessen Typen vorher weiß und entsperechend deklariere.

    MFG


    • Bearbeitet ati.sah Freitag, 7. Juni 2013 13:21
    Freitag, 7. Juni 2013 13:19
  • Hi,
    das reicht an Info nicht. Es fehlen Antworten auf meine Fragen. Einen guten Programmierer zeichnen vor allem analytische Herangehensweisen aus, die schrittweise eindeutige Antworten als Basis für eine Fehlersuche und –analyse geben.
     
    1. Fehlen die Spalten?
     
    2. Fehlen die Kopfbeschriftungen in den Spalten (wenn diese vorhanden sind)?
     
    3. Fehlen die Zeilen?
     
    4. Fehlen die Zellinhalte (wenn die Zeilen vorhanden sind)?
     
    5. Wie sieht die Deklaration einer Spalte aus?
     
    6. Von welchem Typ ist die gebundene Datenquelle?
     
    7. Welche Eigenschaften haben die Datenobjekte der gebundenen Datenquelle?
     
    Zu 5. ist insbesondere Interessant, was Du bei DataPropertyName angegeben hast.
     
    --
    Peter Fleischer
    Freitag, 7. Juni 2013 13:20
  • Hallo,

    1. Typen: varchar(20) SysNr, varchar(10) Name, varchar(40) Kommentar, int(10) HK_ID

    2. SysNr, Name, Kommentar, HK_ID

    3. ?

    4. z.B: SysNr=1, Name='Text', Kommentar='Text', HK_ID=5

    5. s.o

    6. Typen: varchar(20) SysNr, varchar(10) Name, varchar(40) Kommentar, int(10) HK_ID

    7. ?

    ich hoffe dies hilft.

    MFG

    Freitag, 7. Juni 2013 14:25
  • Hallo ati.sah,

    dgv.AutoGenerateColumns hat überhaupt keinen Effekt im ungebundenen Modus. Da gibt's keine Automatismen. Wenn Du willst, dass das DataGridView 5 Spalten hat, dann setzt Du einfach ColumnsCount = 5. Und wenn Du den Namen einer Spalte bestimmen willst, setzt Du Columns[0].Name = "Erste Spalte". Und eine Zeile fügst Du dann z.B. über Rows.Add(new string[] {"1", "2", "3", "4", "5"}) ein: Alles Schritt für Schritt und alles "manuell".

    Exemplarische Vorgehensweise: Erstellen eines ungebundenen DataGridView-Steuerelements in Windows Forms

    Wenn Du das DataGridView hingegen automatisch an eine Datenquelle binden möchtest (gebundener Modus), dann mußt Du einem bestimmten Vorgehen folgen, das hier beschrieben wird:

    Gewusst wie: Binden von Daten an das DataGridView-Steuerelement in Windows Forms

    Hast Du denn überhaupt die von mir verlinkte Dokumentation schon durch? - Du kannst freilich alles natürlich im Selbstexperiment erlernen, aber das wird dann auch ein Weilchen dauern...

    Gruß
    Marcel

    Freitag, 7. Juni 2013 14:32
    Moderator
  • ***************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ***************************************************************************************************************

    Mittwoch, 19. Juni 2013 14:10
    Moderator