Immer leere Zeilen nach Einstellung DataGridView.DataSource
Könnte jemand mir sagen, warum ich bin immer leere Zeilen nach der Ausführung dieses Codes?
...
dataGridView.AutoGenerateColumns = false; //must be false, else getting additional columns from SQL
dataGridView.DataSource = dataSet.Tables[0].DefaultView;
Habe auch versucht
dataGridView.Update();
aber nicht funktioniert.
Zeilenanzahl ist ok, aber warum bekomme ich leere Zeilen?
Ich bin mit Winforms.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was enthalten ist in dem DataSet?
Vielleicht der DataTable enthalten im DataSet hat keine Zeilen. Ich würde AutoGenerateColumns zu wahren und nur manuell das verstecken von Spalten, die Sie nicht sehen wollen. Ich habe noch nie verwendet AutoGenerateColumns = false. Aber ohne mehr code ist es schwer zu diagnostizieren. Versuchen Sie tauschen diese beiden Aussagen (.DataSource zuerst).
AutoGenerateColumns haben möglicherweise keine Auswirkungen auf die entsprechende binding-Quelle (DataTable aus DataSet).
DataSet gefüllt werden muss durch DataAdapter:
Habe das problem gefunden.
Entwarf ich die Spalten in der VS datagridview-designer. Nicht den Namen der Spalte, aber die Spalte DataPropertyName muss übereinstimmen mit Feldern in der Datenbank.
Dann auch dupliziert Spalten ausblenden.
Versuchen, etwas entlang diesen Linien:
Prop1 & Prop2 sollte mit Ihrer Tabelle Spaltennamen. Eigenschaft 1 & Eigenschaft 2 ist der header-text angezeigt werden.
EDIT:
Aus dem Beispiel, das Sie Gaben, wie es aussieht, sind die Kombination von gebundenen Spalten mit ungebundenen Spalten.
Hierzu:
1.Entfernen Sie alle Spalten Hinzugefügt werden, die designer
2.Fügen Sie diesen code:
HTH.
Auch, wenn Sie mit AutoGenerateColumns= false, stellen Sie sicher, dass Sie Hinzugefügt haben einige gebundene Spalten, oder Sie erhalten eine leere Zeile für jeden Datensatz
Ich weiß, es war eine lange Zeit, da Sie dies geschrieben, aber ich hatte gerade das gleiche problem und herausgefunden, die Antwort, so dachte ich, ich würde es veröffentlichen, damit andere profitieren könnten.
Den Grund Ihrer Spalten wurden leer ist, weil Sie auch brauchen, um die DataPropertyName der einzelnen Spalten im designer entsprechend Ihrer Datenbank-Feld-Namen. Nur die Einstellung der Entwurfs-name ist nicht genug.
Hoffe, dass jemand hilft.
Ok, eine erweiterte Probe:
Machte ich in der designer einige Spalten:
Spalte-Namen:
customerID and customerFirstName
column headerText:
Ident. and First name
dann bekomme ich einige Daten aus sql-Tabelle...
und der sql-Tabelle die Spalten sind die gleichen wie die Spaltennamen in der dataGridView.
Das Ergebnis bekomme ich, wenn
dataGridView.AutoGenerateColumns = false;
ist ein zwei Spalte im dataGridView mit headerTextIdent. | First name
.Wenn ich
dataGridView.AutoGenerateColumns = true;
dann bekomme ich im dataGridView Spalten wie diese:Ident. | First name | customerID | customerFirstName
.alle Zeilen unterhalb
Ident
undFirst name
sindempty
und alle anderen untencustomerID
undcustomerFirstName
sindok
.Nun möchte ich, dass die Zeilen unterhalb
customerID
undcustomerFirstName
wäre unterIdent
undFirst name
und SpaltencustomerID
undcustomerFirstName
versteckt werden sollen.Schrieb ich diesen code und es funktioniert:
Aber warum DataGridView-dosen nicht für mich mit diesem code:
dataGridView.DataSource = dataSet.Tables[0].DefaultView;
Mir.dgvList.AutoGenerateColumns = False
Funktioniert es
Den Fall, dass jemand noch mit dem Thema, mein problem war, dass ich versucht hatte, Sie zu binden an Klasse öffentliche Felder und Eigenschaften. ändern von Eigenschaften, I. e. {get; set;} es behoben.
Versuchen Sie, diesen code vor dem laden der Raster
Also ich hatte eine benutzerdefinierte Implementierung wo gebe ich den Benutzern die Möglichkeit zum speichern der excel-ähnliche Filter in den Spalten.
Lud ich die Ergebnisse ins Netz, aber nichts erschien, da die excel-ähnliche filter auf eine Spalte konnte nicht mit etwas.
Ich weiß, es ist spät, aber für meine Fall-Lösung war nicht anpassen Spalten des datagridview. Fügen Sie einfach ein leeres datagridview & binden Sie es.
In meinem Fall keine Zeilen sichtbar waren, weil ich die generierten Daten per LINQ und vergessen zum hinzufügen eines Anrufs zu
.ToArray()
am Ende. Nach konvertieren der Daten von Zeilen in ein array, hat es funktioniert.