private void SaveColumns(ManagementList subject)
        {
            if (!VerifyColumnsSavable(subject, this.SaveColumns))
            {
                return;
            }

            this.columns.Clear();

            int i = 0;

            foreach (InnerListColumn ilc in subject.List.InnerGrid.Columns)
            {
                ColumnStateDescriptor csd = CreateColumnStateDescriptor(ilc, true);
                csd.Index = i++;
                this.columns.Add(ilc.DataDescription.PropertyName, csd);
            }

            foreach (InnerListColumn ilc in subject.List.InnerGrid.AvailableColumns)
            {
                if (subject.List.InnerGrid.Columns.Contains(ilc))
                {
                    continue;
                }

                ColumnStateDescriptor csd = CreateColumnStateDescriptor(ilc, false);
                csd.Index = i++;
                this.columns.Add(ilc.DataDescription.PropertyName, csd);
            }
        }
        private static ColumnStateDescriptor CreateColumnStateDescriptor(InnerListColumn ilc, bool isInUse)
        {
            ColumnStateDescriptor csd = new ColumnStateDescriptor();

            csd.IsInUse       = isInUse;
            csd.Width         = GetColumnWidth(ilc);
            csd.SortDirection = ilc.DataDescription.SortDirection;

            return(csd);
        }