2016-08-09 4 views
1

Wie kann ich eine Spalte aus meiner DataGridView nach dem Binden in der DataSource-Eigenschaft löschen?Wie lösche Binding-Spalte von DataGridView?

Zum Beispiel mein Objekt ist:

public class A 
{ 
    int a; 
    int b; 
    int c; 
} 

Dann tun ich:

List<A> aList = new List<A>(); 

//add some values in aList 

myDataGridView.DataSource = aList; 

My Datagridview ist Spalten für A, B und C zeigt, und ich möchte C-Säule aus, dass entfernen Liste.

Jeder Vorschlag wird berücksichtigt.

+0

Ohne Ihre Klasse zu modifizieren? – Rahul

+0

Ja .. Ich verwende dieses Feld in meinem Geschäftsmodell – guijob

+0

Verstecken der Colun ist nicht genug? – TaW

Antwort

1

Als eine einfache Möglichkeit zu sagen Sie die Eigenschaft mit [Browsable(false)] dekorieren können. Auf diese Weise wird die Spalte nicht in Raster angezeigt werden, wenn Sie Ihre Spalten automatisch generiert:

[Browsable(false)] 
public int c { get; set; } 

Auch können Sie das Displayname Attribut auch Spaltenüberschrift, zum Beispiel zu setzen, wenn Sie eine Eigenschaft mit [DisplayName("Some Text")] Attributen schmücken , Einige Text wird als Header-Text angezeigt.

Eine weitere einfache Lösung ist eine Liste von Objekten der Auswahl dieser Eigenschaften enthalten, die Sie von der ursprünglichen Liste benötigen linq mit:

var aList = new List<A>(); 
dataGridView1.DataSource = aList.Select(x => new { a = x.a, b = x.b }).ToList(); 
+0

Das Browsable-Attribut war genau das, wonach ich suchte. Vielen Dank – guijob

2

Sie können eine separate Klasse (DTO) erstellen, die nur A und B enthält. Erstellen Sie dann eine Liste dieser Klasse und binden Sie sie an die Gridview.

(OR)

erstellen DataTable mit der notwendigen Spalte -> füllen, dass die Datentabelle und binden, die als Datasource Ihrer gridview.

(OR)

halten die Säule zu Ihrem gridview begrenzt, aber es verstecken

myDataGridView.Columns["C"].Visible = false; 
Verwandte Themen