[C#] DataGridView oraz BindingSource


(Marcin Obala) #1

Witam

Chciałbym stworzyć swojego BindingSource. Polega to na tym, że mam pliki XML lub CSV które wczytuję a następnie wyświetlam dane w DataGridView. Zasada działania programu jest prosta. Mamy TextBox w który wpisujemy tekst, wciskamy enter lub tabulację (czytnik kodów kreskowych wysyła na końcu tabulację). Następnie program szuka podanej wartości w kolumnie numer 1 a następnie jak znajdzie wyświetla wartość z kolumny numer 0. Zwykła tabela przypisań(chociaż ja jej nie mam). Mam zbudowaną klasę.

class Setup

    {

        string TopFile = "NXT_FeederReportUnit_T.xml";

        string BottomFile = "NXT_FeederReportUnit_B.xml";

        public string Name;


        public enum Side {Top, Bottom, Both};

        Side Actual_side;


        List BothSetup;

        List TopSetup;

        List BottomSetup;


        public Setup()

        {

            BothSetup = new List();

            TopSetup = new List();

            BottomSetup = new List();

            Name = "";

        }

}

class ComponentInSetup

    {


        public static Dictionary Columns = new Dictionary

            {

                {"fsSetPos",0},

                {"fsPartNum",1},

                {"Localization",2},

                {"pkgInfoTapeWidth",3},

                {"pkgInfoFeedPitch",4},

                {"fsPartQty",5},

                {"fsPartQtyTop",6},

                {"fsPartQtyBot",7},

                {"Side",8},

                {"Checked",9},

            };

        public static int CountOfColumns = Columns.Count;

        public Dictionary component = new Dictionary(CountOfColumns);

        //public string[] component = new string[CountOfColumns];

    }

Oczywiście wszystko obudowane jest funkcjami tak żeby to wypełnić. Zastanawiałem się czy nie da zrobić się tak że jeśli zmienię coś w listach Top, Bottom i Both Setup żeby automatycznie zmieniał się datagridView.

Druga sprawa, zadanie na wyższym poziomie, że jeśli w słowniku compomnent ulegnie zmianie pole Checked czyli z indeksem 9 automatycznie DataGridView zmienił kolor wiersza w którym to Checked zostanie zmienione.

To jest rozważanie teoretyczne które ewentualnie wspomoże praktykę, póki co muszę przejść dwoma pętlami, raz po liście, zaznaczyć komponent i drugi raz po datagridview żeby podświetlić linijkę.

BindingSource natywnie wspiera listy, jednak jak zmusić go do tego żeby po dostaniu listy zajrzał do słownika component i przypisał do dataDridView wartości do odpowiednich kolumn (kolumny nazywają się tak samo jak w słowniku Columns wyżej)