2014-09-27 3 views
1

Я использую DataGridView в приложении C#WinForms и хочу, чтобы пользователь выбирал между набором значений, которые будут одинаковыми в каждой ячейке. Я предполагаю, что должен быть способ заполнить все ячейки списком значений.Как заполнить DataGridViewCombobBoxColumn со значениями

Используя графический дизайнер, я добавил COL_BUSINESS_INDUSTRY, что является DataGridViewComboBoxColumn в DataGridView. В конструкторе, я хочу, чтобы заполнить ComboBoxes со списком значений, для которых я использую следующий код:

COL_BUSINESS_INDUSTRY.DataSource = LoadIndustries(); 
COL_BUSINESS_INDUSTRY.DataPropertyName = "industryName"; 
COL_BUSINESS_INDUSTRY.DisplayMember = COL_BUSINESS_INDUSTRY.DataPropertyName; 
COL_BUSINESS_INDUSTRY.ValueMember = COL_BUSINESS_INDUSTRY.DataPropertyName; 

LoadIndustries() возвращает DataTable, который имеет два fiels: id и industryName

The проблема в том, что когда я выполняю это, ComboBoxes не содержит значений.

Я также попробовал LoadIndustries() вернуть List<string>, не установив DataPropertyName, но это тоже не сработало.

Я также попытался сделать это, с LoadIndustries() возвращающая List<string>, но все-таки не повезло:

COL_BUSINESS_INDUSTRY.Items.AddRange(); 

Очевидно, что я делаю что-то неправильно, но это было более 3 часов на поиск в Интернете, и я понятия не имею. Почему мои ComboBoxes не отображают значения?

EDIT: По предложению TAW, я сделал следующие изменения, которые до сих пор не работают:

Добавлен следующий класс содержит следующие значения:

class IndustryObj 
{ 
    public string theString { get; set; } 
    public string theId { get; set; } 
    public IndustryObj(string id, string s) { theId = id; theString = s; } 
    public override string ToString() { return theString; } 
} 

Я нахожусь загружая отрасли следующим образом. Я могу гарантировать, что загрузка значений в объектах работает отлично:

private static List<IndustryObj> LoadIndustries() 
{ 
    var industries = new List<IndustryObj>(); 

    const string sql = "SELECT id, name FROM Industry ORDER BY name"; 
    using (var sqlQuery = new CustomSqlQuery(MyDatabases.Telemarketing, sql)) 
    { 
     foreach (var record in sqlQuery) 
     { 
      industries.Add(new IndustryObj(record[0].ToString(), record[1].ToString())); 
     } 
    } 

    return industries; 
} 

Это метод, где я заполнение DataGridView. Все значения загружаются в порядке, за исключением тех, за исключением COL_BUSINESS_INDUSTRY:

private void LoadBusinesses() 
{ 
    COL_BUSINESS_INDUSTRY.DataSource = LoadIndustries(); 
    COL_BUSINESS_INDUSTRY.DataPropertyName = "theString"; 
    COL_BUSINESS_INDUSTRY.DisplayMember = COL_BUSINESS_INDUSTRY.DataPropertyName; 
    COL_BUSINESS_INDUSTRY.ValueMember = "theId"; 

    const string sql = "SELECT id, company, contact, address, phone, email, status, industry, callbackDate, callbackTime, createdBy, lastUpdatedBy, lockedUntil FROM Business ORDER BY company"; 
    using (var sqlQuery = new CustomSqlQuery(MyDatabases.Telemarketing, sql)) 
    { 
     var columns = new DataGridViewColumn[] 
      { 
       COL_BUSINESS_COMPANY, 
       COL_BUSINESS_CONTACT, 
       COL_BUSINESS_ADDRESS, 
       COL_BUSINESS_PHONE, 
       COL_BUSINESS_EMAIL, 
       COL_BUSINESS_STATUS, 
       COL_BUSINESS_INDUSTRY, 
       COL_BUSINESS_CALLBACKDATE, 
       COL_BUSINESS_CALLBACKTIME, 
       COL_BUSINESS_CREATEDBY, 
       COL_BUSINESS_LASTUPDATEDBY, 
       COL_BUSINESS_LOCKEDUNTIL 
      }; 

     foreach (var record in sqlQuery) 
     { 
      dgv_Businesses.Rows.Add(CustomDGVRow.InitializeFromDataReader(true, record, columns)); 
     } 
    } 
} 

EDIT 2: После второго предложения TAW, я сделал следующее. Это не помогло:

private List<IndustryObj> industryObjects; 
private void LoadBusinesses() 
{ 
    industryObjects = LoadIndustries(); 
    COL_BUSINESS_INDUSTRY.DataSource = industryObjects; 
    COL_BUSINESS_INDUSTRY.DataPropertyName = "theString"; 
    COL_BUSINESS_INDUSTRY.DisplayMember = COL_BUSINESS_INDUSTRY.DataPropertyName; 
    COL_BUSINESS_INDUSTRY.ValueMember = "theId"; 
... 

EDIT 3: Luminous на самом деле есть, но что вводит ряд других проблем. Метод загрузки теперь выглядит следующим образом:

private void LoadBusinesses() 
{ 
    // Load the records. 
    const string sql = 
     "SELECT id, company, contact, address, phone, email, status, industry, callbackDate, callbackTime, createdBy, lastUpdatedBy, lockedUntil FROM Business ORDER BY company"; 
    using (var sqlQuery = new CustomSqlQuery(MyDatabases.Telemarketing, sql)) 
    { 
     var columns = new DataGridViewColumn[] 
      { 
       COL_BUSINESS_COMPANY, 
       COL_BUSINESS_CONTACT, 
       COL_BUSINESS_ADDRESS, 
       COL_BUSINESS_PHONE, 
       COL_BUSINESS_EMAIL, 
       COL_BUSINESS_STATUS, 
       COL_BUSINESS_INDUSTRY, 
       COL_BUSINESS_CALLBACKDATE, 
       COL_BUSINESS_CALLBACKTIME, 
       COL_BUSINESS_CREATEDBY, 
       COL_BUSINESS_LASTUPDATEDBY, 
       COL_BUSINESS_LOCKEDUNTIL 
      }; 

     foreach (var record in sqlQuery) 
     { 
      dgv_Businesses.Rows.Add(CustomDGVRow.InitializeFromDataReader(true, record, columns)); 
     } 
    } 

    // Load the industries and bind the industry DataSource to the industry ComboBoxColumn. 
    COL_BUSINESS_INDUSTRY.DataSource = LoadIndustries(); 
    COL_BUSINESS_INDUSTRY.DataPropertyName = "theString"; 
    COL_BUSINESS_INDUSTRY.DisplayMember = COL_BUSINESS_INDUSTRY.DataPropertyName; 
    COL_BUSINESS_INDUSTRY.ValueMember = "theId"; 

    // Select the correct industries in the industry column. 
    foreach (var rawRow in dgv_Businesses.Rows) 
    { 
     var row = rawRow as CustomDGVRow; 
     if (row == null) continue; 

     foreach (var item in ((CustomDGVComboBoxCell) row.Cells[COL_BUSINESS_INDUSTRY.Index]).Items) 
     { 
      var industry = item as IndustryObj; 
      if (industry == null) continue; 

      if (row.Cells[COL_BUSINESS_INDUSTRY.Index].Value != null && industry.theId == row.Cells[COL_BUSINESS_INDUSTRY.Index].Value.ToString()) 
      { 
       row.Cells[COL_BUSINESS_INDUSTRY.Index].Value = industry; 
      } 
     } 
    } 
} 

Как вы можете видеть, я также необходимо выбрать одно значение из списка элементов, на основе его идентификатора в базе данных. Поскольку я привязываю только источник данных после загрузки элементов (согласно предложению Luminous), мне нужно сделать еще один проход через строки и установить правильное отраслевое значение для каждой строки. Однако, поскольку у меня огромное количество строк, это очень дорого.Поэтому для того, чтобы наградить Баунти, мне нужен ответ на еще два вопроса:

  1. Как я могу не делать еще один проход, чтобы установить правильные значения?
  2. Зачем мне сначала загружать строки и только потом связывать источник данных? Это кажется довольно неинтуитивным, и это вызывает мою проблему. Что делать, если требования требуют, чтобы больше данных загружалось в какой-то момент после начальной загрузки? Должен ли я затем снова сделать привязку?
+0

_COL_BUSINESS_INDUSTRY.DataSource = LoadIndustries(); _ компилировать ли это ?? Попробуйте поместить его в переменную и установите источник данных для этой переменной; Я не могу себе представить, как система может работать с DataSource, который нужно вытаскивать из функции все время. – TaW

+0

Он компилируется без каких-либо ошибок или предупреждений. Я пробовал это, как вы можете видеть в последнем правлении, до сих пор не повезло. Любые другие идеи? Я также открыл щедрость для этого, поскольку мне нужно, чтобы он работал как можно скорее. –

+1

Нет смысла загружать строки перед выпадающим столбцом, imo. вся суть этого типа столбца - позволить безопасный ввод и редактирование ценности. должно быть что-то еще неправильно. – TaW

ответ

1

Первое, что вам нужно, чтобы объяснить, почему вы в столбце установлен, чтобы быть checkboxcolumn, а не comboboxcolumn? Это может быть вашей проблемой.

Теперь, по вашему коду, у вас есть список, уже заполненный вашими возможными отраслями. Как вы собираетесь привязать данные к любому из ваших кортежей (строк), если у вас нет каких-либо строк для начала? Вы должны привязать все ячейки в столбце после того, как вы заполните dgv своим результатом запроса.

Если это не проблема, я сделал простой пример привязки данных List<String> к ячейке.

Вот пример ввода списка в datagridviewcombobox:

private List<String> theList = new List<String>(); 
    public Form1() 
    { 
     InitializeComponent(); 
     theList.Add("is"); 
     theList.Add("this"); 
     theList.Add("working"); 
     theList.Add("yet?"); 
     DataGridViewComboBoxCell dropDown = (DataGridViewComboBoxCell) dgv.Rows[0].Cells[0]; 
     dropDown.DataSource = theList; 

    } 

    private void aButton_Click(object sender, EventArgs e) 
    { 
     theList.Clear(); 
     theList.Add("I"); 
     theList.Add("Knew"); 
     theList.Add("this"); 
     theList.Add("would"); 
     theList.Add("work!!!"); 
    } 

Как я избегаю делать еще один проход, чтобы установить правильные значения?

Вы не можете (может быть). В datagridview будет загружаться один результат за раз. Если вы не вернете несколько значений для этой одной ячейки, вам придется сделать еще один проход. Dgv ожидает, чтобы заполнить строку данными, данными для этой конкретной строки. То, что вы можете попробовать, не распознает, что столбец существует в вашем запросе (просто удалите его из запроса), и это может привести к тому, что он пройдет через этот столбец и не присвоит ему значение. Если это преуспеет в том, что вам нужно сделать дальше, это сделать эту ячейку автоматически такими значениями, когда создается строка. Вы узнаете, что это работает, если вы просто добавляете строки, и эти ячейки сразу же заполняются, даже если в какой-либо из ячеек нет других данных.


Почему мне нужно сначала загрузить строки и только затем связать источник данных? Это кажется довольно неинтуитивным, и это вызывает мою проблему. Что делать, если в запросах больше данных должно быть загружено в какой-то момент после начальной загрузки? Должен ли я затем снова сделать привязку?

У вас должен быть объект для привязки данных к. Связывание данных с столбцом не приведет к привязке данных к ячейкам в этом столбце. Это даже не привязка к заголовку столбца. Вы должны привязываться к самим ячейкам. Как только вы привяжетесь к данным, вы можете изменить этот список столько, сколько захотите, и ячейки, которые привязаны к вашему списку, также будут изменены. Как только вы поймете эту концепцию, привязка данных будет намного проще реализовать в будущем.


Глядя на ваш код еще раз я предлагаю вам создать столбцы перед тем вы заполнить таблицу с данными. Таким образом, ваш dgv не пропускает создание столбца при вставке ваших результатов, но пропускает выделение данных для этого столбца. В вашем цикле foreach создайте строку, назначьте данные, привяжите привязку ячейки к своему List<String> и добавьте строку в свой datagridview. Как только это все работает, возьмите себе выпить и похлопайте себя по спине, чтобы хорошо сделать работу.

Редактировать

Вместо того, чтобы делать то, что я уже говорил ранее, попробуйте это. Это даже не связано с привязкой данных к списку. Если вы знаете, какие ваши строковые значения будут отображаться в раскрывающемся списке во время разработки, вы можете перейти в столбцы> your_column> Items и ввести там строки. Если вы этого не сделаете, все в порядке. Всякий раз, когда у вас есть список строк, вы можете добавить их к внутреннему списку столбца следующим образом:

foo DataGridViewComboBoxColumn = myDGV.columns("YourColumn") 
    foo.Items.Add("blarggg") 

Если вам нужно изменить список в любое время, все строки будут обновляться при внесении указанного изменения.

+0

CheckBoxColumn был опечаткой, я исправил это в вопросе. Перемещение привязки после загрузки действительно работало. Пожалуйста, см. Мой отредактированный вопрос и ответьте на дополнительные вопросы, и я награжу вас щедростью. –

+0

@ VladSchnakovszki Ответ обновлен. – Luminous

+0

Мои столбцы создаются в коде дизайнера, прежде чем выполняется какой-либо из «моего кода». Тем не менее, привязка каждой ячейки при создании строки действительно работает, и она уменьшила время загрузки, что, вероятно, будет лучшим результатом. Спасибо за помощь! –

0

Я могу вам сказать наверняка, что List<string> не может работать как DataSource. Вместо этого вы должны оберткой строки в классе, даже так просто, как это ..:

class StringClass 
{ 
    public string theString { get; set; } 
    public StringClass(string s) { theString = s; } 
    public override string ToString() { return theString;} 
} 

.. потому, что DataSource нужно кормить из свойств. Вы можете попробовать это, чтобы создать такой список из вашего DataTable:

List<StringClass> industries = DT.AsEnumerable().Select(r=>r[fieldIndex].ToString()) 
      .Distinct().OrderBy(r=>r).Select(r => new StringClass(r)).ToList(); 

Obvioulsy вы оставите из Distinct и OrderBy, если вы не хотите их и изменить индекс поля ..!

Обновление

Вот блок кода (без связи), который считывает из таблицы MySql. Он считывает список поставщиков (lieferanten) в DataTable DTL и затем считывает различные местоположения (ort) из той же таблицы БД во второй DataTable DTO. Оттуда я вытаскиваю источник для ComboBox в список, как показано выше.

Он создает три столбца (int, string, string) и две необходимые ячейки шаблона dct и dccb.

Он устанавливает элементы и сначала устанавливает DataSource ячейки combobox, а затем datagridview.

Когда DataGridView заполняет все ComboBox клетки установлены на правильные значения, как это должно быть ..

MySqlDataAdapter DA = new MySqlDataAdapter(); 
string sqlSelectAll = "SELECT * from lieferanten"; 
DA.SelectCommand = new MySqlCommand(sqlSelectAll, CO); 

DA.Fill(DTL); 

string sqlSelectOrte = "SELECT DISTINCT ort from lieferanten"; 
DA.SelectCommand = new MySqlCommand(sqlSelectOrte, CO); 

DA.Fill(DTO); 

ortsListe = DTO.AsEnumerable().Select(r => r["ort"].ToString()) 
      .OrderBy(r => r).Select(r => new StringClass(r)).ToList(); 


BindingSource bSource = new BindingSource(); 
bSource.DataSource = DTL; 

dgv_Lief.AutoGenerateColumns = false; 


DataGridViewCell dct = new DataGridViewTextBoxCell(); 

DataGridViewColumn dc0 = new DataGridViewColumn(); 
dc0.ValueType = typeof(int); 
dc0.Name = "lieferanten_key"; 
dc0.DataPropertyName = "lieferanten_key"; 
dc0.CellTemplate = dct; 
dgv_Lief.Columns.Add(dc0); 

DataGridViewColumn dc1 = new DataGridViewColumn(); 
dc1.ValueType = typeof(string); 
dc1.Name = "name"; 
dc1.CellTemplate = dct; 
dc1.DataPropertyName = "firma"; 
dgv_Lief.Columns.Add(dc1); 

DataGridViewComboBoxCell dccb = new DataGridViewComboBoxCell(); 
dccb.DataSource = ortsListe; 
dccb.DisplayMember = "theString"; // using the same field.. 
dccb.ValueMember = "theString"; // .. as I have only one 

DataGridViewColumn dc2 = new DataGridViewColumn(); 
dc2.ValueType = typeof(string); 
dc2.DataPropertyName = "ort"; 
dc2.CellTemplate = dccb; 
dgv_Lief.Columns.Add(dc2); 

dgv_Lief.DataSource = bSource; 

Обратите внимание на порядок вещей. Сначала настройте ячейку шаблона dccb, включая DataSource, затем добавьте ее в dgv, затем установите dgv DataSource.

Я использую StringClass сверху.

Даже если я уйду из установив DGV-х DataSource я могу добавить строки и использовать значения из ComboBoxColumn, как и ожидалось ..

+0

Спасибо за ответ. Я попробовал ваше предложение, но это не сработало. См. Мой отредактированный вопрос. –

+0

См. Мой обновленный ответ! – TaW

0

Вы можете сделать все это без написания строки кода с помощью конструктора окон.

В меню «Данные» добавьте новый источник данных.

Выбор базы данных и нажмите кнопку Далее

Select Dataset и нажмите следующий

Введите строку соединения деталей

Выберите таблицы, которые вы хотите включить в набор данных (как бизнес и таблицы промышленности)

Завершите работу мастера

в панели источников данных, перетащите предприятия таблицы O в вашу форму. Это создаст представление сетки данных со всеми столбцами внутри, добавит источник привязки и адаптер таблицы, чтобы заполнить его.

Нажмите на маленькую стрелку в правом верхнем углу окна просмотра сетки данных и выберите Измен столбцов

Выберите столбец промышленности, а также изменить тип столбца в DataGridViewComboBox Колонка

Открыть падение источник данных вниз, и выберите таблицу отраслей из только что созданного набора данных.

Установите элемент отображения в столбец имен и элемент Value в столбец первичного ключа.

Затем вы можете просмотреть созданный конструктором код, чтобы увидеть, как все это сочетается. Это не самый красивый код, но его код вам не нужно писать.

Интересными являются источники данных, источники связывания и адаптеры для таблицы, которые объединяют все это.

С немного дополнительной работой над набором данных вы также можете сохранить обратно в базу данных.

Heres результат моей быстрой попытке на это:

using System; 
using System.Windows.Forms; 

namespace WindowsFormsBindingDemo 
{ 
public partial class BusinessesForm : Form 
{ 
    /// <summary> 
    /// Required designer variable. 
    /// </summary> 
    private System.ComponentModel.IContainer components = null; 

    private System.Windows.Forms.DataGridView businessesDataGridView; 
    private BusinessesDataSet businessesDataSet; 
    private System.Windows.Forms.BindingSource businessesBindingSource; 
    private BusinessesDataSetTableAdapters.BusinessesTableAdapter businessesTableAdapter; 
    private BusinessesDataSetTableAdapters.TableAdapterManager tableAdapterManager; 
    private BusinessesDataSetTableAdapters.IndustriesTableAdapter industriesTableAdapter; 
    private System.Windows.Forms.BindingSource industriesBindingSource; 
    private System.Windows.Forms.DataGridViewTextBoxColumn iDDataGridViewTextBoxColumn; 
    private System.Windows.Forms.DataGridViewComboBoxColumn industryIDDataGridViewTextBoxColumn; 
    private System.Windows.Forms.DataGridViewTextBoxColumn businessNameDataGridViewTextBoxColumn; 

    public BusinessesForm() 
    { 
     this.components = new System.ComponentModel.Container(); 
     this.businessesDataGridView = new System.Windows.Forms.DataGridView(); 
     this.businessesDataSet = new WindowsFormsBindingDemo.BusinessesDataSet(); 
     this.businessesBindingSource = new System.Windows.Forms.BindingSource(this.components); 
     this.businessesTableAdapter = new WindowsFormsBindingDemo.BusinessesDataSetTableAdapters.BusinessesTableAdapter(); 
     this.tableAdapterManager = new WindowsFormsBindingDemo.BusinessesDataSetTableAdapters.TableAdapterManager(); 
     this.industriesBindingSource = new System.Windows.Forms.BindingSource(this.components); 
     this.industriesTableAdapter = new WindowsFormsBindingDemo.BusinessesDataSetTableAdapters.IndustriesTableAdapter(); 
     this.iDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); 
     this.industryIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewComboBoxColumn(); 
     this.businessNameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); 
     ((System.ComponentModel.ISupportInitialize)(this.businessesDataGridView)).BeginInit(); 
     ((System.ComponentModel.ISupportInitialize)(this.businessesDataSet)).BeginInit(); 
     ((System.ComponentModel.ISupportInitialize)(this.businessesBindingSource)).BeginInit(); 
     ((System.ComponentModel.ISupportInitialize)(this.industriesBindingSource)).BeginInit(); 
     this.SuspendLayout(); 
     // 
     // businessesDataGridView 
     // 
     this.businessesDataGridView.AutoGenerateColumns = false; 
     this.businessesDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     this.businessesDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 
     this.iDDataGridViewTextBoxColumn, 
     this.industryIDDataGridViewTextBoxColumn, 
     this.businessNameDataGridViewTextBoxColumn}); 
     this.businessesDataGridView.DataSource = this.businessesBindingSource; 
     this.businessesDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; 
     this.businessesDataGridView.Location = new System.Drawing.Point(0, 0); 
     this.businessesDataGridView.Name = "businessesDataGridView"; 
     this.businessesDataGridView.RowTemplate.Height = 24; 
     this.businessesDataGridView.Size = new System.Drawing.Size(554, 374); 
     this.businessesDataGridView.TabIndex = 0; 
     // 
     // businessesDataSet 
     // 
     this.businessesDataSet.DataSetName = "BusinessesDataSet"; 
     this.businessesDataSet.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; 
     // 
     // businessesBindingSource 
     // 
     this.businessesBindingSource.DataMember = "Businesses"; 
     this.businessesBindingSource.DataSource = this.businessesDataSet; 
     // 
     // businessesTableAdapter 
     // 
     this.businessesTableAdapter.ClearBeforeFill = true; 
     // 
     // tableAdapterManager 
     // 
     this.tableAdapterManager.BackupDataSetBeforeUpdate = false; 
     this.tableAdapterManager.BusinessesTableAdapter = this.businessesTableAdapter; 
     this.tableAdapterManager.IndustriesTableAdapter = this.industriesTableAdapter; 
     this.tableAdapterManager.UpdateOrder = WindowsFormsBindingDemo.BusinessesDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete; 
     // 
     // industriesBindingSource 
     // 
     this.industriesBindingSource.DataMember = "Industries"; 
     this.industriesBindingSource.DataSource = this.businessesDataSet; 
     // 
     // industriesTableAdapter 
     // 
     this.industriesTableAdapter.ClearBeforeFill = true; 
     // 
     // iDDataGridViewTextBoxColumn 
     // 
     this.iDDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; 
     this.iDDataGridViewTextBoxColumn.DataPropertyName = "ID"; 
     this.iDDataGridViewTextBoxColumn.HeaderText = "ID"; 
     this.iDDataGridViewTextBoxColumn.Name = "iDDataGridViewTextBoxColumn"; 
     this.iDDataGridViewTextBoxColumn.ReadOnly = true; 
     // 
     // industryIDDataGridViewTextBoxColumn 
     // 
     this.industryIDDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; 
     this.industryIDDataGridViewTextBoxColumn.DataPropertyName = "IndustryID"; 
     this.industryIDDataGridViewTextBoxColumn.DataSource = this.industriesBindingSource; 
     this.industryIDDataGridViewTextBoxColumn.DisplayMember = "IndustryName"; 
     this.industryIDDataGridViewTextBoxColumn.FillWeight = 300F; 
     this.industryIDDataGridViewTextBoxColumn.HeaderText = "IndustryID"; 
     this.industryIDDataGridViewTextBoxColumn.Name = "industryIDDataGridViewTextBoxColumn"; 
     this.industryIDDataGridViewTextBoxColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; 
     this.industryIDDataGridViewTextBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; 
     this.industryIDDataGridViewTextBoxColumn.ValueMember = "ID"; 
     // 
     // businessNameDataGridViewTextBoxColumn 
     // 
     this.businessNameDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; 
     this.businessNameDataGridViewTextBoxColumn.DataPropertyName = "BusinessName"; 
     this.businessNameDataGridViewTextBoxColumn.FillWeight = 300F; 
     this.businessNameDataGridViewTextBoxColumn.HeaderText = "BusinessName"; 
     this.businessNameDataGridViewTextBoxColumn.Name = "businessNameDataGridViewTextBoxColumn"; 
     // 
     // BusinessesForm 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(554, 374); 
     this.Controls.Add(this.businessesDataGridView); 
     this.Name = "BusinessesForm"; 
     this.Text = "Businesses"; 
     this.Load += new System.EventHandler(this.BusinessesForm_Load); 
     ((System.ComponentModel.ISupportInitialize)(this.businessesDataGridView)).EndInit(); 
     ((System.ComponentModel.ISupportInitialize)(this.businessesDataSet)).EndInit(); 
     ((System.ComponentModel.ISupportInitialize)(this.businessesBindingSource)).EndInit(); 
     ((System.ComponentModel.ISupportInitialize)(this.industriesBindingSource)).EndInit(); 
     this.ResumeLayout(false); 
    } 


    private void BusinessesForm_Load(object sender, EventArgs e) 
    { 
     // TODO: This line of code loads data into the 'businessesDataSet.Industries' table. You can move, or remove it, as needed. 
     this.industriesTableAdapter.Fill(this.businessesDataSet.Industries); 
     // TODO: This line of code loads data into the 'businessesDataSet.Businesses' table. You can move, or remove it, as needed. 
     this.businessesTableAdapter.Fill(this.businessesDataSet.Businesses); 
    } 



    /// <summary> 
    /// Clean up any resources being used. 
    /// </summary> 
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
    protected override void Dispose(bool disposing) 
    { 
     if (disposing && (components != null)) 
     { 
      components.Dispose(); 
     } 
     base.Dispose(disposing); 
    } 

} 

}

+0

К сожалению, я не могу этого сделать, поскольку моя база данных - это MySQL, которая не поддерживается дизайнером. –

Смежные вопросы