Puis-je définir la source de données pour une colonne en grille, uniquement pour une ligne spécifique?

StackOverflow https://stackoverflow.com/questions/6036338

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top