asp.net gridview get column index by name

asp.net gridview get column index by name

Bei dem ASP.NET Gridview auf den Wert einer Spalte zuzugreifen kann durch den Index, also Reihenfolgen der Spalten geschehen. Diese Methode ist jedoch nicht besonders smart. Erfahrungsgemäß kann sich bei der Weiterentwicklung Deiner Software schnell mal etwas ändern. Wenn man dann auf falsche Spalten zugreift, weil sich der Index verschoben hat, merkt man das unter Umständen erst, wenn der Anwender sich zu Recht beschwert. So ein Fehler kann dann bittere Folgen haben. Meine Empfehlung ist also: Diese statische C# Methode übernehmen und auf den Index zugreifen, der hier über den Namen der Spalte ermittelt wird.

    /// <summary>
        /// Liefert den Indes einer Spalte anhand des Headnamens
        /// </summary>
        /// <param name="gv"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static int GetBoundFieldIndexByName(GridView gv, string name)
        {
            int index = 0;
            bool found = false;
            foreach (DataControlField c in gv.Columns)
            {
                if (c is BoundField)
                {
                    BoundField field = (BoundField)c;
                    if (name == field.DataField ||
                        name == field.SortExpression ||
                        name == field.HeaderText)
                    {
                        found = true;
                        break;
                    }
                }
                index++;
            }
            return found ? index : -1;
        }

Über den Autor

Tobias Stephan administrator

Schreibe eine Antwort