2016-07-29 13 views
0

ich eine CheckedListBoxItem in grivviewDevexpress setzen, wie Sie hier sehen können:Holen Sie sich den Wert von CheckedListBoxItem DevExpress in gridview C#

enter image description here

ich die Datenquelle in page_load initialisieren, wie Sie sehen können:

List<User> confirms = _userRepository.Get().ToList(); 
      ConfirmList.DataSource = confirms; 
      ConfirmList.DisplayMember = "FullName"; 
      ConfirmList.ValueMember = "Id"; 

In Speichern Schaltfläche muss ich die ausgewählten Werte (mehr als eine Auswahl) nach Benutzer, aber es gibt null warum?

private void btnSave_ItemClick_1(object sender, ItemClickEventArgs e) 
{ 
    gridView.CloseEditor(); 
    Convert.ToDateTime(gridView.GetRowCellValue(rowHandle, "ReturnDateTime")); 
    CheckedListBoxItem confirms =(CheckedListBoxItem)(gridView.GetRowCellValue(rowHandle, "Confirm")); 
} 
+0

was speichern Sie in der "Bestätigen" Spalte ?? wie ich aus der Datenquelle der Liste sehen kann. Es sollte einen ähnlichen Datentyp haben wie die Id-Eigenschaft von User. –

+0

@NiranjanKala was heißt das? Ich habe in der Frage –

Antwort

0

Da ich über Ihren Code vermuten kann, dass Sie gridView.GetRowCellValue(rowHandle, "Confirm") werfen Wert auf ungültigen Typ zurückgegeben. Ändern Sie die untere Zeile mit dem Operator as.

CheckedListBoxItem confirms =(CheckedListBoxItem)(gridView.GetRowCellValue(rowHandle, "Confirm")); 

zu

CheckedListBoxItem confirms = gridView.GetRowCellValue(rowHandle, "Confirm") as CheckedListBoxItem; 
if(confirms != null){} 

Nachdem ich, dass Sie wissen, was das Ergebnis zu debuggen ist.

Wie ich, dass Editor sehen können mit der Säule angebracht ist Confirm dann werden Sie das Ergebnis von gridView.GetRowCellValue() erhalten ist Id Eigenschaftswert des User Klasse nicht die CheckedListBoxItem.

Wenn Sie die gridView.CloseEditor(); aufrufen, dann ist der Editor nicht vorhanden, um das CheckedListBoxItem zu erhalten. Sie können den Editor unter ColumnView.ShownEditor Event aufrufen. Siehe unten stehenden Code-Schnipsel:

private void MainForm_Load(object sender, EventArgs e) { 
    this.PhonesSource.DataSource = DataContext.GetPhones(); 
    this.CountriesSource.DataSource = DataContext.GetCountries(); 
    this.CitiesSource.DataSource = DataContext.GetAllCities(); 
} 

private void GridView_ShownEditor(object sender, EventArgs e) { 
    ColumnView view = (ColumnView)sender; 
    if (view.FocusedColumn.FieldName == "CityCode") { 
     LookUpEdit editor = (LookUpEdit)view.ActiveEditor; 
     string countryCode = Convert.ToString(view.GetFocusedRowCellValue("CountryCode")); 
     editor.Properties.DataSource = DataContext.GetCitiesByCountryCode(countryCode); 
    } 
} 

// In certain scenarios you may want to clear the secondary editor's value 
// You can use the RepositoryItem.EditValueChanged event for this purpose 
private void CountryEditor_EditValueChanged(object sender, EventArgs e) { 
    this.GridView.PostEditor(); 
    this.GridView.SetFocusedRowCellValue("CityCode", null); 
} 


    private void MainForm_Load(object sender, EventArgs e) { 
     this.PhonesSource.DataSource = DataContext.GetPhones(); 
     this.CountriesSource.DataSource = DataContext.GetCountries(); 
     this.CitiesSource.DataSource = DataContext.GetAllCities(); 
    } 

    private void GridView_ShownEditor(object sender, EventArgs e) { 
     ColumnView view = (ColumnView)sender; 
     if (view.FocusedColumn.FieldName == "CityCode") { 
      LookUpEdit editor = (LookUpEdit)view.ActiveEditor; 
      string countryCode = Convert.ToString(view.GetFocusedRowCellValue("CountryCode")); 
      editor.Properties.DataSource = DataContext.GetCitiesByCountryCode(countryCode); 
     } 
    } 

Hope this Hilfe ..

+0

Vielen Dank für Ihren Code, aber es funktioniert nicht wieder Null Null –

+0

Sie Lösung ist ähnlich meinem Vorschlag, dass Sie nur den Schlüssel aus der Rasterzelle nach der Auswahl erhalten. Sie können den aktuellen Datensatz mit diesen Schlüsseln aus der Datenquelle abrufen. Wenn Ihre Liste Mehrfachauswahl zulässt, ist Ihre Frage für Ihren Fragetext nicht relevant. Niemand kann beurteilen, dass Sie mehrere Werte aus der Liste abrufen möchten. Es ist großartig, dass Sie das Problem gelöst haben –

-1

Ich denke, die Casting-Art ist das Problem.

+0

erklärt, welches Casting ich verwenden soll? –