2016-03-31 13 views
0

Ich habe ein Datagridview an eine Binding binded und innerhalb dieser Liste I Comboboxen auf eine Liste binded haben, die eine Eigenschaft meiner Binding ist, für das Verständnis besser:ComboBoxCell Wert ist nicht gültig

ListA ---> binded zu Datagridview

ListA.ListB ---> binded

zu Comboboxen wenn ich die Form öffne ich meine corectly Comboboxen zeigt die Werte innerhalb des ListB einstellen können, aber wenn ich hinzufügen, einen neuen Artikel, den ich bekommen ein Fehler (Wert ist nicht gültig), hier ist t er Code:

private void dataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    ((DataGridViewComboBoxColumn)dataGridView.Columns["Names"]).DisplayIndex = 4; 
    for (int i = 0; i < People.Count; i++) 
    { 
     var cell = (DataGridViewComboBoxCell)dataGridView.Rows[i].Cells["Names"]; 
     cell.DataSource = People[i].Names; 
     cell.Value = People[i].Names[0]; 
    } 
} 

Der obige Code funktioniert gut, geschieht das Problem hier:

private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
{ 
    if (dataGridView.CurrentCell.ColumnIndex != dataGridView.Columns["Names"].Index) 
     return; 
    var cell = (DataGridViewComboBoxCell)dataGridViewICAO.CurrentCell; 
    if (cell.EditedFormattedValue.ToString().Equals(String.Empty)) return; 
    var regex = new Regex("[a-zA-Z]"); 
    if (!regex.IsMatch(cell.EditedFormattedValue.ToString())) 
     e.Cancel = true; 
    else 
    { 
     People[cell.RowIndex].Names.Add(cell.EditedFormattedValue.ToString()); 
     cell.Value = People[cell.RowIndex].Names.Last(); 
     People[cell.RowIndex].Names = cell.Value.ToString(); 
    } 
} 

auf der Zeilencode cell.Value = People[cell.RowIndex].Names.Last(); Ich bekomme die Ausnahme ... Dank an alle! Diese

+0

was ist die Ausnahme? – barakcaf

+0

System.ArgumentException: DataGridViewComboBoxCell-Wert ist nicht gültig – Chrix1387

+0

Fügen Sie die Details, die Sie in den Kommentar eingefügt haben, hinzu und antworten Sie auf Ihre Frage, indem Sie sie bearbeiten: http://stackoverflow.com/posts/36334193/edit – TheLethalCoder

Antwort

0

ist, wie ich die Combobox eingestellt:

private void AddComboBox() 
    { 
     var comboNames = new DataGridViewComboBoxColumn { Name = "cmbNames", HeaderText = "Names" }; 
     dataGridView.Columns.Add(comboNames); 
    } 

private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
     { 
      if (dataGridView.CurrentCell.ColumnIndex == dataGridView.Columns["cmbNames"].Index) 
      { 
       var combo = e.Control as ComboBox; 
       if (combo == null) 
        return; 

       combo.DropDownStyle = ComboBoxStyle.DropDown; 
      } 
     } 
Verwandte Themen