2010-06-12 4 views
7

In meiner Windows Mobile .NET-Anwendung habe ich ein einfaches Array von Objekten mit den Daten, die ich in meinem DataGrid anzeigen möchte. Dazu rufe ich einfach:Array als DataSource eines DataGrids: Wie werden Spalten angepasst?

myDataGrid.DataSource = myArray;

Dies funktioniert, aber ich habe ein Problem mit sich: es alle Eigenschaften als Spalten verwendet und verwendet die Namen der Eigenschaften, wie die Spaltenüberschriften. Ich kann nicht herausfinden, wie zwei Dinge anpassen:

  • Wählen Sie, welche Untergruppe von Eigenschaften als Spalten angezeigt werden sollen (zum Beispiel ich eine ID, Name und Value-Eigenschaft haben, würde ich nur Namen angezeigt werden sollen und Wert);

  • Benennen Sie die Spaltenüberschriften um, damit sie sinnvoller sind (wenn die Eigenschaft beispielsweise ID heißt, geben Sie eine Spaltenüberschrift mit der Überschrift "Number" ein).

Ist das überhaupt möglich?

Wie erwähnt, ist dies in einer Windows Mobile .NET (Version 2) -Anwendung.

Antwort

1

Sie müssen die Datagrid.TableStyles-Eigenschaft festlegen, um das Layout anzupassen.

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.tablestyles.aspx

Weitere Details hier auf ein Array von Objekten auf Bindung: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.mappingname(VS.71).aspx

den System.Windows.Forms.DataGrid zu einem stark typisierten Array von Objekten zu binden, die Objekt muss öffentliche Eigenschaften enthalten. Um ein DataGridTableStyle zu erstellen, das ein solches Array anzeigt, legen Sie die MappingName-Eigenschaft auf Klassenname [] fest, wobei Klassenname durch den Klassenname ersetzt wird. Beachten Sie auch, dass die Eigenschaft MappingName case-sensitive ist.

+0

Ich habe diese schon vorher gefunden, aber ich kann mir nicht vorstellen, wie sie mit einem Array als DataSource funktionieren würden. Die einzige Information, die ich finden kann, benutzt sie zusammen mit einer DataTable. – pbean

+0

Ah das funktioniert. Ein sehr gutes Beispiel ist hier: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.mappingname.aspx – pbean

+1

@pbean - froh zu hören, es funktioniert! – code4life

0

Ich weiß nicht, ob Sie den Namen der Spalten im Voraus wissen? Aber wenn das der Fall ist, können Sie in die "Edit Columns" Ihrer DataGridView gehen und dort nur Ihre Spalten anlegen. Ändern Sie in der Kategorie "Data" den "DataPropertyName" von "(none)" in den Namen der Klasseneigenschaft. Von dort aus können Sie den Namen anpassen, wenn er sichtbar ist, die Größe usw. Das DataGrid bindet es an Ihre DataSource.

Außerdem gibt es eine Eigenschaft "DataGridView.AutoGenerateColumns", die Sie auf false festlegen können, damit Sie nicht alle Eigenschaften Ihres Objekts binden müssen. Ich habe mir auch diese Hilfe geholt.

+0

Leider geht es nicht um ein DataGridView sondern um ein DataGrid (der Vorgänger) und ich kann die Spalten in der Entwurfszeit nicht bearbeiten wie ich es mit einem DataGridView auf einem "normalen" (Windows) Formular kann. – pbean

+0

Also, Sie müssen es manuell über die Tabellentypen tun: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle(v=VS.100).aspx Aber ich Angenommen, Sie könnten vom DataGrid erben und eigene Eigenschaften erstellen, die den TableStyles zugeordnet werden, sodass Sie den Designer verwenden können. Aber wenn Sie das für einen Tisch tun wollen, ist es das vielleicht nicht wert. – Sauleil

0

In diesem Code ist _im ein Objekt der Tabelle und ich binde dieses Objekt mit DataGridView dgvItem nach dem Binden ändere ich Kopftext von dgvItem wie erforderlich.

Verwandte Themen