2015-07-11 2 views
0

Я работаю над формой окна с использованием C# и SQL Server 2014. Как говорится в названии, я хочу изменить ячейку/элемент данных DataGridView в определенном столбце в поле combobox, если они пустой.Изменить ячейку datagridview на combobox, если пусто/(null) C#

Мой метод загрузки формы, как это:

private void AdminPanel_Load(object sender, EventArgs e) 
    { 
     DBConn.ConnectToDatabase(); 

     dataGridViewAP.DataSource = DBConn.getAdminInfo(); 

    } 

У меня есть метод getAdminInfo(), как этот

public DataTable getAdminInfo() 
    { 
     try 
     { 
      string strCommand = "SELECT Customer.AccountNo AS [Account Number], Customer.Name AS [Customer Name], Customer.Adrs1 AS [Address 1], Customer.Adrs2 AS [Address 2], Customer.City AS [City], Customer.Province AS [Province], Customer.PostalCode AS [Postal Code], Customer.Email1 AS [Email], Manifest.Class AS [Class], Manifest.Rname AS [Recipient Name], Manifest.Adrs1 AS [Dest. Address 1], Manifest.Adrs2 AS [Dest. Address 2], Manifest.City AS [City], Manifest.State AS [State], Manifest.PostalCode AS [Postal Code], Manifest.Country AS [Country], Manifest.Item AS [Description], Manifest.Weight AS [Weight (lb)], Manifest.Value AS [Value (USD)], Manifest.DateTime AS [Date/Time], Manifest.CheckedBy AS [Checked By], Customer.AccStatus AS [Account Status] FROM Customer INNER JOIN Manifest ON Customer.AccountNo = Manifest.FKAccountNo WHERE CONVERT(DATE,DateTime)=CONVERT(Date,GETDATE())"; 
      DataTable dt = new DataTable(); 
      SqlDataAdapter da = new SqlDataAdapter(strCommand, conn); 
      da.Fill(dt); 
      return dt; 
     } 
     catch (SqlException e) 
     { 
      MessageBox.Show(e.Source + "/n" + e.Message + "/n" + e.StackTrace); 
      return null; 
     } 
    } 

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

Надеюсь, что мой вопрос ясен, любые идеи?

ответ

2

Перед привязкой DataTable к DataGridView создайте DataGridViewComboBoxColum, соответствующий вашему конкретному столбцу, и установите его свойство DataPropertyName этого столбца. Укажите элементы ComboBox через привязку.

Код для вставки в функции нагрузки:

DataGridViewComboBoxColumn cbcol = new DataGridViewComboBoxColumn(); 
cbcol.Name    = "Account_Status" ; 
cbcol.DataPropertyName = "Account Status" ; // DataTable column name 
cbcol.DataSource  = ...    ; // ComboBox DataSource 
dataGridViewAP.Columns.Add(cbcol); 
dataGridViewAP.DataSource = DBConn.getAdminInfo(); 
+0

Sorry сграффито для моего покойного ответа. Прежде всего, спасибо за ответ. Оно работает. Есть ли способ вернуть ячейку обратно в прежнее состояние i.e NULL/Empty? Поскольку, как только я нажимаю на поле со списком, некоторое значение остается выбранным. Я использовал список как источник данных для cbcol, я добавил еще одно пустое поле в список (""), чтобы выбрать пустое поле. Я не уверен, что это правильный способ сделать это. – Vik

+0

Возможность (не проверена) заключается в том, чтобы добавить новую пустую строку в DataGridViewComboBoxColumn DataSource. – Graffito

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