Spalten verstecken in einem DataGridView

Grorkef

Grünschnabel
Hallo,

ich möchte leere Spalten in einem DataGridView ausblenden, nun ist es so das er die Leeren Spalten versteckt. Aber nur bei dem Datensatz der beim Start des Programms geladen wurde :( Sobald ich ein anderen Datensatz auswähle blendet er die leeren Spalten wieder ein :(

Sobald in der ComboBox1 ein neuer Wert ausgewählt wird, wird diese Methode aktviert. Beim Programmstart werden die Namen aus der Datenbank in die ComboBox1 geladen, was die Methode einmal auslöst und dabei werden die leeren Spalten korrekt ausgeblendet. Sobald man jedoch anderen Namen funktioniert das ausblenden nicht mehr obwohl die IF Abfragen die richtigen Spalten auf Hidden setzen :(

Code:
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string table = "gebäude";

            if (radioButton1.Checked)
            {
                table = "gebäude";
            }
            else if (radioButton2.Checked)
            {
                table = "forschungen";
            }

            metall = Convert.ToInt64(IsNull(dataset.Tables[table].Rows[comboBox1.SelectedIndex]["metall"]));
            kristall = Convert.ToInt64(IsNull(dataset.Tables[table].Rows[comboBox1.SelectedIndex]["kristall"]));
            deuterium = Convert.ToInt64(IsNull(dataset.Tables[table].Rows[comboBox1.SelectedIndex]["deuterium"]));
            energie = Convert.ToInt64(IsNull(dataset.Tables[table].Rows[comboBox1.SelectedIndex]["energie"]));
            double factor = Convert.ToDouble(IsNull(dataset.Tables[table].Rows[comboBox1.SelectedIndex]["faktor"]));

            dt.Rows.Clear(); dt.Columns.Clear();
            dt.Columns.Add(new DataColumn("Stufe", typeof(int)));
            dt.Columns.Add(new DataColumn("Metall", typeof(string)));
            dt.Columns.Add(new DataColumn("Kristall", typeof(string)));
            dt.Columns.Add(new DataColumn("Deuterium", typeof(string)));
            dt.Columns.Add(new DataColumn("Energie", typeof(string)));

            if (metall == 0) this.dt.Columns[1].ColumnMapping = MappingType.Hidden;
            if (kristall == 0) this.dt.Columns[2].ColumnMapping = MappingType.Hidden;
            if (deuterium == 0) this.dt.Columns[3].ColumnMapping = MappingType.Hidden;
            if (energie == 0) this.dt.Columns[4].ColumnMapping = MappingType.Hidden;

            Debug.WriteLine(dt.Columns[1].ColumnMapping);
            Debug.WriteLine(dt.Columns[2].ColumnMapping);
            Debug.WriteLine(dt.Columns[3].ColumnMapping);
            Debug.WriteLine(dt.Columns[4].ColumnMapping);
            Debug.WriteLine("\r\n");
           
            for (int i = 1; i <= 50; i++)
            {
                double met = metall * Math.Pow(factor, (i - 1));
                double kris = kristall * Math.Pow(factor, (i - 1));
                double deut = deuterium * Math.Pow(factor, (i - 1));
                double ene = energie * Math.Pow(factor, (i - 1));
                AddNewRow(dt, i, String.Format(ci, "{0:0,0}", met), String.Format(ci, "{0:0,0}", kris), String.Format(ci, "{0:0,0}", deut), String.Format(ci, "{0:0,0}", ene));
            }
            dataGridView1.Refresh();
        }

Leider findet man hier zu nicht wirklich viel oder ich suche einfach nach dem Falschen :/ die MSDN war auch keine große Hilfe die Beispiele dort funktionieren leider auch nicht :(

Ich hoffe ihr habt eine Idee wie ich das Problem lösen kann :)

MFG Daniel L.
 
Zurück