DataGridViewComboBoxColumn DataSource?
Ich versuche, etwas zu bekommen, die in ein DataGridView
. Es scheint so, das sollte ziemlich einfach sein, aber ich habe Probleme. Ich möchte die Anzeige von drei Spalten:
- CodeID
- CodeName
- ComboBox mit DisplayMember der TypeName, ValueMember des TypeID -
Ich möchte in der Lage sein wählen Sie aus allen möglichen Werten von TypeName
. Hier ist mein dilemma:
Wenn ich load all dies in einer DataTable
und legen Sie die DataGridView
als DataSource
kann ich die Anzeige der bestehenden TypeName
für den Datensatz, aber die combo-box nicht auch andere Werte. Wenn ich die DataSource
für die DataGridViewComboBoxColumn
einer separaten DataTable
mit allen möglichen TypeNames
, wird der vorhandene Wert wird nicht angezeigt.
DataGridView
ist wirklich lästig, mit zu arbeiten, also entweder eine Lösung oder eine brauchbare alternative wäre willkommen.
Edit: es scheint, das Problem wird verursacht, durch mein wollen, zu haben eine separate Position für DisplayMember
und ValueMember
. Die folgenden arbeiten, wenn ich nicht die Sorge über die Einstellung der ID
als ValueMember
:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "Type",
DataPropertyName = "Type"
}
Wenn ich den folgenden, die richtigen Arten ausgewählt werden, aber ich kann nicht ändern Sie die Auswahl in der combo-box:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "TypeID",
DataPropertyName = "TypeID"
}
Wenn ich verwenden Sie die folgende ich bekomme eine FormatException
Fehler als er versucht zu füllen:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "TypeID",
DataPropertyName = "Type"
}
Bearbeiten: typeList
ist eine einfache DataTable
bevölkert von den folgenden:
SELECT DISTINCT IT.InsuranceTypeID, IT.[Type]
FROM InsuranceType IT
WHERE IT.ClientID = @ClientID
ORDER BY [Type]
Yep...siehe mein edit.
Können Sie nach, wie Sie setup
typeList
und die Struktur, die Sie der Liste hinzufügen möchten? Die Arten von DataPropertyName
und ValueMember
muss die gleiche sein, die wahrscheinlich ist, warum Sie immer die Ausnahme im letzten Beispiel.sicher, siehe mein edit.
InformationsquelleAutor John Straka | 2011-10-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, ich kam mit ein Beispiel
ClientInfo
undInsuranceDetails
dass ich denke, dass kann imitieren, was Sie zu tun versuchen. Lassen Sie mich wissen, wenn diese Angaben nicht ganz richtig. Dieses Beispiel füllt dasDataGridViewComboBox
und setzen Sie den Wert auf der Grundlage derInsuranceDetails
(speziell:InsurDetailz = all_insurance_types[2]
)Self
Eigenschaft.InformationsquelleAutor SwDevMan81
Ich hatte ein ähnliches (glaube ich) Problem, und die Lösung für mich war, die
DataSource
für dieDataGridViewComboBoxColumn
vor Einstellung derDataSource
für dieDataGridView
.In meinem Fall, meine DataSources sind ein
List<T>
und einBindingList<T>
jeweils aber es sollte die gleiche Arbeit mit Datentabellen:Dies hat mir sehr geholfen bei der Verwendung Eloquera und Bindung einige komplexe Klasse an ein datagrid. Danke!
Dieser arbeitete für mich. Danke!
Danke. War auf der Suche seit 1 Stunde...
InformationsquelleAutor C-Pound Guru