2015-04-14 73 views
0

我的表單中有幾個DataGrid,而我的數據源是CSV文件,其中我已經設置了要顯示的列。簡而言之,當我選擇新建項目時,CSV文件將從默認位置加載,並顯示具有空行和列名稱的網格。 現在我想要做的是爲列1添加一個下拉列表(組合框)控件,在空格的情況下,它保持爲空,並且在帶有數據的CSV文件的情況下,動態顯示數據,但我無能爲力做到這一點。我從來沒有在網格中添加組合框。所有包含MSDN的例子都不是令人困惑的。 我是新手和明確的答案是歡迎。 下面是代碼,我是多麼加載CSV數據在C#DataGridView(Winforms)中添加Combox

string[] strColumns = null; 
string[] strData = null; 

StreamReader sr = new StreamReader(strCSV); 
DataTable dt = null; 
int RowCount = 0; 

while (!sr.EndOfStream) 
{ 
    String strRow = sr.ReadLine().Trim(); 
    if (strRow.Length > 0) 
    { 
     strData = strRow.Split(delimter); 

     if (RowCount == 0) 
     { 
      RowCount = 1; 
      strColumns = strRow.Split(delimter); 
      dt = new DataTable(); 

      foreach (string csvcolumn in strColumns) 
      { 
       DataColumn column = new DataColumn(csvcolumn.ToUpper(), typeof(string)); 
       column.DefaultValue = string.Empty; 
       dt.Columns.Add(column); 
      } 
     } 

     else 
     { 
      DataRow row = dt.NewRow(); 
      for (int i = 0; i < strColumns.Length; i++) 
      { 
       row[strColumns[i]] = strData[i] == null ? string.Empty : strData[i].ToString(); 
      } 
      dt.Rows.Add(row); 
     } 
    } 
} 
sr.Close(); 
sr.Dispose(); 
return dt; 
+0

這不是我清楚你想要達到的目標。你想添加'DataGridViewComboBoxColumns'還是'ComboBox'(DataGridView之外)? – stefankmitph

+0

@stefankmitph我想添加DataGridViewComboBoxCell,其中ColumnIndex == 1 –

回答

0
   DataGridViewComboBoxCell comboJob = new DataGridViewComboBoxCell(); 

      //these data will be displayed in comboBox: 

      string[] data = JobIdList.ToArray(); 

      comboJob.Items.AddRange(data); 

      this.dgInfo()[e.ColumnIndex, e.RowIndex] = comboJob; 

      bValidating = true; 
0
using System; 
using System.Data; 
using System.Windows.Forms; 
using System.Data.SqlClient; 

namespace WindowsApplication1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     dataGridView1.ColumnCount = 3; 
     dataGridView1.Columns[0].Name = "Product ID"; 
     dataGridView1.Columns[1].Name = "Product Name"; 
     dataGridView1.Columns[2].Name = "Product Price"; 

     string[] row = new string[] { "1", "Product 1", "1000" }; 
     dataGridView1.Rows.Add(row); 
     row = new string[] { "2", "Product 2", "2000" }; 
     dataGridView1.Rows.Add(row); 
     row = new string[] { "3", "Product 3", "3000" }; 
     dataGridView1.Rows.Add(row); 
     row = new string[] { "4", "Product 4", "4000" }; 
     dataGridView1.Rows.Add(row); 

     DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); 
     cmb.HeaderText = "Select Data"; 
     cmb.Name = "cmb"; 
     cmb.MaxDropDownItems = 4; 
     cmb.Items.Add("True"); 
     cmb.Items.Add("False"); 
     dataGridView1.Columns.Add(cmb); 

    } 
} 
+0

您應該爲您的代碼添加一些評論 – Sarrus

+0

我認爲代碼非常全面。但我注意到! – PyNico

+0

我已經定義了列,我已經從空白CSV文件中加載,行中可能有數據(在舊項目的情況下),並且可能沒有新項目的情況。我需要的是,在已經定義的列的單元格中添加下拉菜單。 –

相關問題