2017-07-06 5 views
0

Ich muss ein DataGridView mit Elementen aus einer Liste auffüllen.Hinzufügen von Elementen zu DataGridView von einer ListBox zu einer einzelnen Spalte

Ich brauche die erste Zeile des GridView gefüllt mit den Elementen aus der String-Liste, und ich muss einige Bearbeitung für die Elemente in der GridView nacheinander und fügen Sie das Ergebnis der zweiten Zeile (String).

Derzeit Bindung im die Datagridview wie diese

dataGridView1.DataSource = mylist.ConvertAll(x => new { Value = x }); 
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 

ich Strings in der ersten Reihe, Prozess fügen Sie den Spaltennamen diese Strings nacheinander und aktualisieren Sie die zweite column..what vordefinieren müssen, ist der beste Weg, um dies zu tun?

Antwort

1

hier ist Ihre Lösung,

 dgvDataViewer.ColumnCount = 1; 
     dgvDataViewer.Columns[0].Name = "Language"; 

     string[] row = new string[] { "C#" }; 
     dgvDataViewer.Rows.Add(row); 
     row = new string[] { "C++" }; 
     dgvDataViewer.Rows.Add(row); 
     row = new string[] { "C" }; 
     dgvDataViewer.Rows.Add(row); 

     DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); 
     cmb.HeaderText = "HeaderText"; 
     cmb.Name = "Name"; 
     cmb.FlatStyle = FlatStyle.System; 
     dgvDataViewer.Columns.Add(cmb); 

     DataGridViewComboBoxCell dgvcbc = (DataGridViewComboBoxCell)dgvDataViewer.Rows[0].Cells[1]; 
     dgvcbc.Items.Add("Apple"); 
     dgvcbc.Items.Add("Google"); 
     dgvcbc.Items.Add("Apache"); 
     dgvcbc.Items.Add("Microsoft"); 

Hope this Sie für Ihre Lösung helfen.

1

Zuerst müssen Sie Ihre Spalten entweder programmgesteuert oder Sie können den Designer erstellen - das liegt an Ihnen. Ich werde das Ganze codieren, um das ganze Beispiel zu zeigen:

private DataGridView dgNew; 

public MyForm() 
{ 
    InitializeComponent(); 
    MyInitializeComponent(); 
} 

private void MyInitializeComponent() 
{ 
    dgNew = new DataGridView(); 

    var txtCol = new DataGridViewTextBoxColumn 
    { 
     HeaderText = "Column1", 
     Name = "Column1", 
     DataPropertyName = "Value" 
    }; 
    dgNew.Columns.Add(txtCol); 

    txtCol = new DataGridViewTextBoxColumn 
    { 
     HeaderText = "Column2", 
     Name = "Column2", 
    }; 
    dgNew.Columns.Add(txtCol); 

    var listOfStrings = new List<string> {"one", "two", "three"}; 
    dgNew.DataSource = listOfStrings.ConvertAll(x => new { Value = x }); ; 
    dgNew.Location = dg.Location; 
    dgNew.Parent = this; 

    this.Load += Form_Load; 
} 

private void Form_Load(object sender, EventArgs e) 
{ 
    // Iterate over the rows, ignoring the header row 
    foreach (var row in dgNew.Rows.OfType<DataGridViewRow>().Where(a => a.Index != -1)) 
    { 
     var col1Value = row.Cells["Column1"].Value?.ToString(); 
     var col2Cell = row.Cells["Column2"]; 

     if (col1Value == null) continue; 

     switch (col1Value) 
     { 
      case ("one"): 
       col2Cell.Value = "row1, col2 val"; 
       break; 
      case ("two"): 
       col2Cell.Value = "row2, col2 val"; 
       break; 
      case ("three"): 
       col2Cell.Value = "row1, col3 val"; 
       break; 
     } 
    } 
} 
Verwandte Themen