Сортировка DataGridView

242
06 марта 2018, 01:29

Загружаю в DataGridView таблицу из Excel. Хочу сделать сортировку по выбору из ComboBox.

 OpenFileDialog ofd = new OpenFileDialog();
        //Задаем расширение имени файла по умолчанию.
        ofd.DefaultExt = "*.xls;*.xlsx";
        //Задаем строку фильтра имен файлов, которая определяет
        //варианты, доступные в поле "Файлы типа" диалогового
        //окна.
        ofd.Filter = "Excel Sheet(*.xlsx)|*.xlsx";
        //Задаем заголовок диалогового окна.
        ofd.Title = "Выберите документ для загрузки данных";
        ExcelObj.Application app = new ExcelObj.Application();
        ExcelObj.Workbook workbook;
        ExcelObj.Worksheet NwSheet;
        ExcelObj.Range ShtRange;
        System.Data.DataTable dt = new System.Data.DataTable();
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            label1.Text = ofd.FileName;
            workbook = app.Workbooks.Open(ofd.FileName, Missing.Value,
            Missing.Value, Missing.Value, Missing.Value, Missing.Value,
            Missing.Value, Missing.Value, Missing.Value, Missing.Value,
            Missing.Value, Missing.Value, Missing.Value, Missing.Value,
            Missing.Value);
            //Устанавливаем номер листа из котрого будут извлекаться данные
            //Листы нумеруются от 1
            NwSheet = (ExcelObj.Worksheet)workbook.Sheets.get_Item(1);
            ShtRange = NwSheet.UsedRange;
            for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
            {
                dt.Columns.Add(
                   new DataColumn((ShtRange.Cells[1, Cnum] as ExcelObj.Range).Value2.ToString()));
            }
            dt.AcceptChanges();
            string[] columnNames = new String[dt.Columns.Count];
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                columnNames[0] = dt.Columns[i].ColumnName;
            }
            for (int Rnum = 2; Rnum <= ShtRange.Rows.Count; Rnum++)
            {
                DataRow dr = dt.NewRow();
                for (int Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++)
                {
                    if ((ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2 != null)
                    {
                        dr[Cnum - 1] =
            (ShtRange.Cells[Rnum, Cnum] as ExcelObj.Range).Value2.ToString();
                    }
                }
                dt.Rows.Add(dr);
                dt.AcceptChanges();
            }
            dataGridView1.DataSource = dt;
            app.Quit();
        }
        else
            System.Windows.Forms.Application.Exit();
    }

Сортировка

if (comboBox1.SelectedIndex == 0)
{
    dataGridView1.Sort(dataGridView1.Columns["Column1"], ListSortDirection.Descending);
}

Пишет,что dataGridView1 пустой, как обозначить,что таблицу берем из Excel?

READ ALSO
Особенности работы Async/Await

Особенности работы Async/Await

У меня есть следующая задача: необходимо в синхронной манере отправить запрос через шину данных и дождаться ответа, после чего вернуть управление...

197
Узнать к какому типу относится символ

Узнать к какому типу относится символ

В общем, есть 2 строки, формат которых нужно проанализировать на похожесть

179
Работа с удаленным MySQL

Работа с удаленным MySQL

Собственно, купил хост для сайтаТам через cPanel создал новую SQL бд

162
Проверка на null перед GetValueOrDefault

Проверка на null перед GetValueOrDefault

Linq, метод Sum для nullable-типов:

159