Puis-je définir la source de données pour une colonne en grille, uniquement pour une ligne spécifique?
-
14-11-2019 - |
Question
Salut, j'ai l'exigence suivante: un contrôle de la grille dans DeveXpress pour WinForm. La colonne 1 pour cette grille est un RepositoryItemCheckEdComboBoxEdit, comment pourrais-je obtenir la ligne actuelle, puis réinitialiser la source de données pour le RepositoryItemCheckEdComboBoxEdit juste pour cette ligne?
La solution
De telles tâches sont généralement implémentées à l'aide du GridView's Showerdordor un événement. Vous devez déterminer la colonne actuellement ciblée et son nom de champ (GridView.foccusedColumn.fieldName), puis modifier la propriété DataSource de l'éditeur en fonction de la valeur enregistrée dans une autre cellule de cet enregistrement. C'est à dire
private void gridView1_ShownEditor(object sender, EventArgs e) {
GridView gridView = sender as GridView;
if(gridView.FocusedColumn.FieldName == "YourField") {
CheckedComboBoxEdit edit = gridView.ActiveEditor as CheckedComboBoxEdit;
object value = gridView.GetRowCellValue(gridView.FocusedRowHandle, "AnotherColumn");
// filter the datasource and set the editor's DataSource:
edit.Properties.DataSource = FilteredDataSource;// your value
}
}
Aussi, jetez un œil au Comment filtrer une deuxième colonne de recherche basée sur la valeur d'une première colonne de recherche Article où une tâche similaire est résolue.
Autres conseils
Vous pouvez gérer le FocusedRowChanged
événement, ensuite définir la source de données en fonction de la vue GetFocusedRow()
.
Vous devrez peut-être avoir un éditeur distinct avec une source de données complète pour afficher des valeurs dans des colonnes non focalisées et gérer CustomRowCellEditForEditing
Pour utiliser le sous-ensemble en mode édition.