private void indexGrid_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            if (e.ColumnIndex != 0)
            {
                return;
            }

            System.Diagnostics.Trace.WriteLine("Validate starting");
            DataGridViewComboBoxCell colCell =
                (DataGridViewComboBoxCell)indexGrid.Rows[e.RowIndex].Cells[0];
            DataGridViewComboBoxCell sortCell =
                (DataGridViewComboBoxCell)indexGrid.Rows[e.RowIndex].Cells[1];

            IndexColumnGridRow gr    = indexColumnBindingSource.Current as IndexColumnGridRow;
            string             value = e.FormattedValue as string;

            if (value == "<None>")
            {
                colCell.Value  = null;
                sortCell.Value = null;
                gr.ColumnName  = null;
                gr.SortOrder   = null;
            }
            else
            {
                colCell.Value = e.FormattedValue;

                if (!String.IsNullOrEmpty(colCell.Value as string) &&
                    String.IsNullOrEmpty(sortCell.Value as string))
                {
                    gr.SortOrder = "Ascending";
                }
                sortCell.Value = gr.SortOrder;
            }
        }
        public IndexColumnEditorDialog(List <IndexColumn> ic)
        {
            InitializeComponent();
            table        = ic[0].OwningIndex.Table;
            indexColumns = ic;

            foreach (Column c in table.Columns)
            {
                if (!String.IsNullOrEmpty(c.ColumnName))
                {
                    columnNames.Add(c.ColumnName);
                }
            }

            for (int i = 0; i < indexColumns.Count; i++)
            {
                IndexColumnGridRow row = new IndexColumnGridRow();
                row.ColumnName = indexColumns[i].ColumnName;
                row.SortOrder  = indexColumns[i].SortOrder.ToString();
                gridRows.Add(row);
            }

            columnName.Items.Add("<None>");
            columnName.Items.AddRange((object[])columnNames.ToArray());

            sortOrder.Items.Add("Ascending");
            sortOrder.Items.Add("Descending");

            indexColumnBindingSource.DataSource = gridRows;
        }
        public IndexColumnEditorDialog(List<IndexColumn> ic)
        {
            table = ic[0].OwningIndex.Table;
            indexColumns = ic;
            InitializeComponent();

            foreach (Column c in table.Columns)
            {
                if (!String.IsNullOrEmpty(c.ColumnName))
                    columnNames.Add(c.ColumnName);
            }

            for (int i=0; i < indexColumns.Count; i++)
            {
                IndexColumnGridRow row = new IndexColumnGridRow();
                row.ColumnName = indexColumns[i].ColumnName;
                row.SortOrder = indexColumns[i].SortOrder.ToString();
                gridRows.Add(row);
            }

            columnName.Items.Add("<None>");
            columnName.Items.AddRange((object[])columnNames.ToArray());

            sortOrder.Items.Add("Ascending");
            sortOrder.Items.Add("Descending");

            indexColumnBindingSource.DataSource = gridRows;
        }