Получение коллекции всех столбцов в datagridview

На форме есть элемент DataGridView, который отображает содержимое таблицы из базы данных MS SQL. Надо отдельно получать список названий всех столбцов, не подключаясь к базе вторично. Можно ли как-то получить их из свойств экземпляра объекта DataGridView?


Ответы (1 шт):

Автор решения: OXYGEN

Правильно это делается так:

  1. Создается класс, который содержит поля из таблицы SQL.
  2. Делается запрос в базу и данные записываются в класс.
  3. После этого данные класса передаются в dataGridView1.DataSource = yourclassList.
  4. В дальнейшем Вы работаете с экземплярами класса.

Вот пример

class smartcar_update_files
    {

    public string Customer_Id { get; set; }
    public string Project_Id { get; set; }
    public string File_path { get; set; }
    public string File_name { get; set; }
    public string File_crc { get; set; }
    public string File_size { get; set; }
    public string File_version { get; set; }
    public string File_type{ get; set; }
    public string Package_type { get; set; }

    public smartcar_update_files(string customerId, string projectId, string filePath, string fileName, string fileCrc, string fileSize, string fileVersion,string fileType)
    {
        Customer_Id = customerId;
        Project_Id = projectId;
        File_path = filePath;
        File_name = fileName;
        File_crc = fileCrc;
        File_size = fileSize;
        File_version = fileVersion;
        File_type = fileType;
    }

    public smartcar_update_files()
    {

    }

вот строковый массив

 public List<smartcar_update_files> UpdateFilesDataList = new List<smartcar_update_files>(); // список содержит экземпляры класса


    public bool GetData(string projectid)
    {
        DbMySQL _mySql = new DbMySQL();
        Regex checkRegex = new Regex("^[0-9]{1,9}[.][0-9]{1,9}$");

        if (checkRegex.IsMatch(projectid))
        {
            string requestQuery = string.Format("SELECT * FROM smartcar_update_files WHERE project_id ='{0}'", projectid);
            var sqlResponse = _mySql.QueryList(requestQuery, 8);

            if (sqlResponse.Count > 0)
            {
                for (int i = 0; i < sqlResponse.Count; i++) // заполняем экземпляр класса ответом из базы
                {
                    smartcar_update_files t = new smartcar_update_files
                        (
                        sqlResponse[i][0],
                        sqlResponse[i][1],
                        sqlResponse[i][2],
                        sqlResponse[i][3],
                        sqlResponse[i][4],
                        sqlResponse[i][5],
                        sqlResponse[i][6],
                        sqlResponse[i][7]
                        );

                    UpdateFilesDataList.Add(t); // добавляем экземпляр класса в список после этого  Datagridview1.DataSource = UpdateFilesDataList
                }
                return true;

            }               
            return false;
        }
        return false;
    }

}

}

→ Ссылка