[c#] Remplissage d'une base de données avec des colonnes dynamiques


0 Answers

2ème approche : utilisez un DataTable. Cela fait usage de l'infrastructure de type personnalisé sous le capot, mais est plus facile à utiliser. Il suffit de lier le ItemsSource de DataGrid à une propriété DataTable.DefaultView:

Cela a fonctionné presque mais au lieu de lier à la propriété de propriété DataTable.DefaultView j'ai créé une propriété de type DataView et lié à cela.

<DataGrid ItemsSource="{Binding DataView, Mode=TwoWay}" AutoGenerateColumns="True" />

Cela permet la liaison bidirectionnelle, la liaison à DataTable.DefaultView ne peut pas être une liaison TwoWay. Dans le modèle View

    public DataView DataView
    {
        get { return _dataView; }
        set
        {
            _dataView = value;
            OnPropertyChanged("DataView");
        }
    }

Avec cette configuration, je ne pouvais pas seulement définir les colonnes dynamiquement lorsque le modèle de vue est initialisé, mais pouvait mettre à jour et modifier la table de données de façon dynamique à tout moment. En utilisant l'approche telle que définie par McGarnagle ci-dessus, le schéma d'affichage n'était pas actualisé lorsque le DataTable était mis à jour avec une nouvelle source de données.

Question

J'ai un Datagrid qui doit être rempli dynamiquement.

Le tablelayout est comme:

id | image | name | Description | Name-1 | Name-N

Les 4 premières colonnes sont statiques, les autres sont dynamiques. L'utilisateur devrait pouvoir ajouter autant d'utilisateurs qu'il le souhaite.

J'essaie de comparer les données de plusieurs utilisateurs en les plaçant côte à côte dans le tableau.

En ce moment j'ai un Listbox qui contient les noms des colonnes générées dynamiques et une méthode qui enchante les colonnes statiques. Je peux aussi charger les données pour chaque utilisateur. maintenant je dois les fusionner à une grande table.

Le problème principal est maintenant: Comment mettre le "Userdata" et le contenu statique dans une grille de données.




Related