DataGridViewComboBoxColumn Source De Données?
Je vais essayer d'obtenir quelque chose de mis en place dans un DataGridView
. Il semble que ce devrait être assez simple, mais je vais avoir des ennuis. Je veux afficher trois colonnes:
- CodeID
- Nom de code
- ComboBox avec DisplayMember de TypeName, ValueMember de TypeID
Je veux être en mesure de choisir parmi toutes les valeurs possibles de TypeName
. Voici mon dilemme:
Si je charge tout cela dans un DataTable
et définir la DataGridView
comme le DataSource
, je peux afficher l'existant TypeName
pour cet enregistrement, mais la zone de liste déroulante inclut pas toutes les autres valeurs. Si j'ai mis le DataSource
pour la DataGridViewComboBoxColumn
à un autre DataTable
qui inclut tous les possibles TypeNames
, la valeur n'est pas affichée.
DataGridView
est vraiment gênant de travailler avec une solution ou une alternative viable serait appréciée.
Edit: il semble que le problème est causé par mon désir d'avoir un élément distinct pour DisplayMember
et ValueMember
. Les travaux suivants, si je ne vous inquiétez pas sur la définition de la ID
comme le ValueMember
:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "Type",
DataPropertyName = "Type"
}
Si je ne les suivants, le droit, les types sont sélectionnés, mais je ne peux pas changer la sélection dans la liste déroulante:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "TypeID",
DataPropertyName = "TypeID"
}
Si j'utilise la suite je reçois un FormatException
erreur comme elle essaie de se renseigner:
var typeColumn = new DataGridViewComboBoxColumn
{
DataSource = typeList,
DisplayMember = "Type",
ValueMember = "TypeID",
DataPropertyName = "Type"
}
modifier: typeList
est un simple DataTable
peuplée par ce qui suit:
SELECT DISTINCT IT.InsuranceTypeID, IT.[Type]
FROM InsuranceType IT
WHERE IT.ClientID = @ClientID
ORDER BY [Type]
Yep...voir mon edit.
Vous pouvez poster la façon dont vous le programme d'installation
typeList
et la structure de l'ajout à la liste? Les types de DataPropertyName
et ValueMember
doit être le même, ce qui est probablement pourquoi vous obtenez une exception dans le dernier exemple.bien sûr, voir mon edit.
OriginalL'auteur John Straka | 2011-10-05
Vous devez vous connecter pour publier un commentaire.
Ok, je suis venu avec un exemple
ClientInfo
etInsuranceDetails
que je pense que peut imiter ce que vous essayez de faire. Permettez-moi de savoir si ces détails ne sont pas tout à fait droit. Cet exemple va peupler leDataGridViewComboBox
et définissez la valeur sur la base de laInsuranceDetails
(notamment à:InsurDetailz = all_insurance_types[2]
)Self
de la propriété.OriginalL'auteur SwDevMan81
J'ai eu la même (je pense) problème, et la solution pour moi a été de définir le
DataSource
pour laDataGridViewComboBoxColumn
avant réglage de laDataSource
pour laDataGridView
.Dans mon cas, mes Sources de données sont un
List<T>
et unBindingList<T>
respectivement, mais il devrait fonctionner de la même chose avec les tables de données:Cela m'a beaucoup aidé lors de l'utilisation de Eloquera et la liaison de certains complexes de classe à un contrôle datagrid. Merci!
Cela a fonctionné pour moi. Merci!
Merci. A la recherche depuis 1 heures...
OriginalL'auteur C-Pound Guru