Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
start:visualstudio2019:programmieren:dotnet:component:programmierbeispiele [2021/11/10 20:39]
wikiadmin [Einfacher Datenbaum erstellen]
start:visualstudio2019:programmieren:dotnet:component:programmierbeispiele [2022/12/19 16:32] (aktuell)
wikiadmin [From IList<T> to DataTable]
Zeile 33: Zeile 33:
 <code c# [enable_line_numbers="true",highlight_lines_extra="1"]> <code c# [enable_line_numbers="true",highlight_lines_extra="1"]>
 #XAML #XAML
 +<TreeView Name="tvMain">
 +</TreeView>
 +</code>
 +<code c# [enable_line_numbers="true",highlight_lines_extra="1"]>
 +#C#
 +TreeViewItem treeItem = null;
 +
 +// North America
 +treeItem = new TreeViewItem();
 +treeItem.Header = "North America";
 +
 +treeItem.Items.Add(new TreeViewItem() { Header = "USA" });
 +treeItem.Items.Add(new TreeViewItem() { Header = "Canada" });
 +treeItem.Items.Add(new TreeViewItem() { Header = "Mexico" });
  
 +tvMain.Items.Add(treeItem);
 </code> </code>
 ----- -----
  
 +==== Angepasster Datenbaum erstellen ====
 {{ :start:visualstudio2019:programmieren:dotnet:component:treeview_header_template.png?200 |}} {{ :start:visualstudio2019:programmieren:dotnet:component:treeview_header_template.png?200 |}}
 +Wenn Sie einige andere Steuerelemente mit dem Inhalt z.B. Checkbox, Bild, etc. hinzufügen möchten, dann können Sie Ihren Baum ohne großen Aufwand gestalten. Sie müssen nur das HeaderTemplate des TreeViewItem anpassen. Sie können auch eine Klasse erstellen, die von TreeViewItem abgeleitet ist, und den Header entsprechend Ihren Anforderungen ändern. 
 <code c# [enable_line_numbers="true",highlight_lines_extra="1"]> <code c# [enable_line_numbers="true",highlight_lines_extra="1"]>
 #XAML #XAML
Zeile 48: Zeile 64:
 ----- -----
  
 +==== xxx Datenbaum erstellen ====
 {{ :start:visualstudio2019:programmieren:dotnet:component:treeview_customtree.png?200 |}} {{ :start:visualstudio2019:programmieren:dotnet:component:treeview_customtree.png?200 |}}
  
Zeile 59: Zeile 76:
  
  
 +----
 +====== DataTable and DataSet ======
 +
 +
 +Das folgende Beispiel soll ein List Objekt in eine Datentabelle umwandeln. Ein generische Lösungsansatz ermöglicht es alle Eigenschaften und nur deren Eigenschaften, in eine Datentabelle umzuwandeln. Da die Eingenschaften auch NULL sein können muss dies bei der Konvertierung berücksichtigt werden.
 +
 +The following example is to convert a List object into a data table. A generic approach allows to convert all properties and only their properties into a data table. Since the properties can also be NULL, this must be taken into account during the conversion.
 +
 +[[https://social.msdn.microsoft.com/Forums/vstudio/en-US/6ffcb247-77fb-40b4-bcba-08ba377ab9db/converting-a-list-to-datatable?forum=csharpgeneral|Example A]]
 +[[https://stackoverflow.com/questions/701223/net-convert-generic-collection-to-datatable|Example B]]
 +==== From IList<T> to DataTable ====
 +
 +<code c# [enable_line_numbers="true",highlight_lines_extra="12"]>
 +public DataTable ConvertToDataTable<T>(IList<T> data)
 +    {
 +        PropertyDescriptorCollection properties =
 +           TypeDescriptor.GetProperties(typeof(T));
 +        DataTable table = new DataTable();
 +        foreach (PropertyDescriptor prop in properties)
 +            table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
 +        foreach (T item in data)
 +        {
 +            DataRow row = table.NewRow();
 +            foreach (PropertyDescriptor prop in properties)
 +                row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
 +            table.Rows.Add(row);
 +        }
 +        return table;
 +
 +    }
 +</code>