j'ai ce scénario:Comment lier Enum de DataTable pour gagner des formes CheckedListBox
[Flags]
enum Colors : long
(
red = 1,
blue = 2,
green = 4,
yellow = 8,
)
DataTable dt = new DataTable();
dt.Columns.Add("PersonName", typeof(string));
dt.Columns.Add("CheckOption", typeof(bool));
dt.Columns.Add("Colors", typeof(long));
// note that the values in the Colors column are enumed values of chosen colors
dt.Rows.Add("Name 1", true, 1); // red
dt.Rows.Add("Name 2", true, 12); // green and yellow
dt.Rows.Add("Name 3", true, 4); // green
dt.Rows.Add("Name 4", false, 11); // red, blue and yellow
// bind the datatable to grid
DataGridView dgv = new DataGridView();
dgv.DataSource = dt;
// hide the colors in the grid
dgv.Columns["Colors"].Visible = false;
// checked list box has all items from the enum
CheckedListBox clb = new CheckedListBox();
string[] colorsArray = Enum.GetNames(typeof(Colors));
clb.Items.AddRange(colorsArray);
ce que je voudrais est de lier en quelque sorte la valeur enumed des couleurs choisies dans la colonne « Couleurs » de datatable au CheckedListBox dans une belle façon. est-ce possible? Jusqu'ici, j'ai joué avec l'événement RowEnter de la grille, mais cela semble très fragile et pas vraiment agréable du tout.
EDIT: par exemple si j'avais une 4ème colonne dans la table de données appelée MonTexte i pourrait lier cette colonne à une zone de texte comme celui-ci:
myTextBox.DataBindings.Add("Text", dt, "MyText");
lors du déplacement à travers les lignes d'une grille de données la valeur la zone de texte change automatiquement et toutes les mises à jour de la zone de texte sont enregistrées dans le datatable. Je voudrais obtenir cette fonctionnalité de la checklistbox et enums aussi.
Je n'ai aucun problème à trouver les couleurs qui sont choisies. ce que je veux, c'est lier ces valeurs à la liste de contrôle, donc je n'aurais pas à faire ce calcul chaque fois qu'une ligne de datagrid est sélectionnée. –
Je suis désolé, je ne saurais pas comment faire ça. Cependant, je crois que même si vous allez lier ces valeurs, vous allez toujours recalculer chaque fois que la ligne est sélectionnée, n'est-ce pas? C'est juste plus abstrait. –
ouais je suppose que je vais devoir ... je cherchais un moyen facile :) –