{"id":55000151,"date":"2018-10-01T00:00:00","date_gmt":"2020-03-27T19:34:33","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=151"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"EDM_DataGrid_als_Datenblatt","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/","title":{"rendered":"EDM: DataGrid als Datenblatt"},"content":{"rendered":"<p><b>Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m&ouml;chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens&auml;tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M&ouml;glichkeit, die enthaltenen Daten zu &auml;ndern, zu l&ouml;schen oder durch neue Datens&auml;tze zu erg&auml;nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.<\/b><\/p>\n<h2>Beispieldaten<\/h2>\n<p>In den Artikeln <b>Von Access zu Entity Framework: Datenmodell <\/b>und <b>Von Access zu Entity Framework: Daten <\/b>haben wir gezeigt, wie Sie ein Entity Data Modell auf Basis eines Access-Datenmodells erstellen und die Daten f&uuml;r die daraus zu erzeugenden Tabellen in eine <b>Seed<\/b>-Methode schreiben. Im Beispielprojekt dieses Artikels haben wir das Entity Data Model und die Klasse mit der <b>Seed<\/b>-Methode bereits angelegt, sodass Sie nach dem Kopieren des Projektordners auf Ihren Rechner einfach nur den die Anweisung Update-Database in der Paket-Manager-Konsole ausf&uuml;hren m&uuml;ssen. Dadurch sollte automatisch eine Datenbank f&uuml;r den in der Verbindungszeichenfolge angegebenen SQL Server, hier <b>LocalDb<\/b>, angelegt und mit den angegebenen Tabellen und Daten gef&uuml;llt werden.<\/p>\n<h2>Fenster mit DataGrid anlegen<\/h2>\n<p>Wir wollen gleich ein eigenes Fenster f&uuml;r dieses Beispiel anlegen, das Sie dann &uuml;ber eine Schaltfl&auml;che vom Fenster <b>MainWindow <\/b>aus aufrufen k&ouml;nnen. Dazu legen wir die folgende Schaltfl&auml;che in diesem Fenster an:<\/p>\n<pre>&lt;Grid&gt;\r\n     &lt;Button x:Name=\"btnProdukteDataGrid\" Click=\"btnProdukteDataGrid_Click\"&gt;DataGrid mit Produkten&lt;\/Button&gt;\r\n&lt;\/Grid&gt;<\/pre>\n<p>Die Schaltfl&auml;che soll die folgende Ereignismethode aufrufen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>btnProdukteDataGrid_Click(sender<span style=\"color:blue;\"> As Object<\/span>, e<span style=\"color:blue;\"> As <\/span>RoutedEventArgs)\r\n     <span style=\"color:blue;\">Dim <\/span>wnd<span style=\"color:blue;\"> As <\/span>Window\r\n     wnd = <span style=\"color:blue;\">New<\/span> ProdukteDataGrid\r\n     wnd.ShowDialog()\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das neue Fenster nennen wir <b>ProdukteDatagrid.xaml<\/b>. Zun&auml;chst legen wir ein paar Elemente in der Code behind-Klasse an, der wir zun&auml;chst die Konstruktor-Methode hinzuf&uuml;gen:<\/p>\n<pre><span style=\"color:blue;\">Public Class<\/span> ProdukteDataGrid\r\n     <span style=\"color:blue;\">Public <\/span>Sub New()\r\n     End Sub\r\n<span style=\"color:blue;\">End Class<\/span><\/pre>\n<p>Wir ben&ouml;tigen einen Verweis auf den Namespace <b>System.Collections.ObjectModel<\/b>:<\/p>\n<pre>Imports System.Collections.ObjectModel<\/pre>\n<p>In der Klasse definieren wir eine lokale Variable f&uuml;r die Kontextklasse sowie die Liste der Produkte:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>dbContext<span style=\"color:blue;\"> As <\/span>BestellverwaltungContext\r\n<span style=\"color:blue;\">Private <\/span>m_Produkte<span style=\"color:blue;\"> As <\/span>ObservableCollection(Of Produkt)<\/pre>\n<p>Die Liste der Produkte wollen wir &uuml;ber eine &ouml;ffentliche Eigenschaft namens <b>Produkte <\/b>verf&uuml;gbar machen:<\/p>\n<pre><span style=\"color:blue;\">Public Property <\/span>Produkte()<span style=\"color:blue;\"> As <\/span>ObservableCollection(Of Produkt)\r\n     Get\r\n         Return m_Produkte\r\n     End Get\r\n     Set(ByVal value<span style=\"color:blue;\"> As <\/span>ObservableCollection(Of Produkt))\r\n         m_Produkte = value\r\n     End <span style=\"color:blue;\">Set<\/span>\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Damit das DataGrid beim &Ouml;ffnen direkt mit den Daten gef&uuml;llt wird, erweitern wir die Konstruktormethode mit diesen Anweisungen:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>New()\r\n     InitializeComponent()\r\n     dbContext = <span style=\"color:blue;\">New<\/span> BestellverwaltungContext\r\n     Produkte = <span style=\"color:blue;\">New<\/span> ObservableCollection(Of Produkt)(dbContext.Produkte)\r\n     DataContext = Me\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Darin f&uuml;llen wir die Kontext-Variable und die <b>List<\/b>-Variable <b>Produkte <\/b>mit der Liste der Produkte. Schlie&szlig;lich stellen wir den <b>DataContext <\/b>auf die Code behind-Klasse ein. Wenn wir nun das Projekt starten und im Fenster <b>MainWindow<\/b> auf die Schaltfl&auml;che klicken, erscheint das DataGrid wie in Bild 1.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_151_001.png\" alt=\"DataGrid mit den Daten der Tabelle Produkte\" width=\"424,7115\" height=\"266,7953\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: DataGrid mit den Daten der Tabelle Produkte<\/span><\/b><\/p>\n<h2>Kombinationsfelder anzeigen<\/h2>\n<p>Die Daten der Felder <b>KategorieID <\/b>und <b>MehrwertsteuersatzID <\/b>m&ouml;chten wir gern aus den jeweils verkn&uuml;pften Auflistungen <b>Kategorien <\/b>und <b>Mehrwertsteuersaetze <\/b>f&uuml;llen. Au&szlig;erdem wollen wir noch die Spalten&uuml;berschriften anpassen. Das erledigen wir mit den folgenden Erweiterungen, wobei wir erst die Daten f&uuml;r die Kombinationsfelder in der Code behind-Klasse verf&uuml;gbar machen. Dazu f&uuml;gen wir zwei private Variablen f&uuml;r die Listen der Kategorien und der Mehrwertsteuers&auml;tze hinzu:<\/p>\n<pre><span style=\"color:blue;\">Private <\/span>m_Kategorien<span style=\"color:blue;\"> As <\/span>List(Of Kategorie)\r\n<span style=\"color:blue;\">Private <\/span>m_Mehrwertsteuersaetze<span style=\"color:blue;\"> As <\/span>List(Of Mehrwertsteuersatz)<\/pre>\n<p>F&uuml;r beide richten wir entsprechende &ouml;ffentliche Eigenschaften ein:<\/p>\n<pre><span style=\"color:blue;\">Public Property <\/span>Kategorien<span style=\"color:blue;\"> As <\/span>List(Of Kategorie)\r\n     Get\r\n         Return m_Kategorien\r\n     End Get\r\n     Set(ByVal value<span style=\"color:blue;\"> As <\/span>List(Of Kategorie))\r\n         m_Kategorien = value\r\n     End <span style=\"color:blue;\">Set<\/span>\r\n<span style=\"color:blue;\">End Property<\/span>\r\n<span style=\"color:blue;\">Public Property <\/span>Mehrwertsteuersaetze<span style=\"color:blue;\"> As <\/span>List(Of Mehrwertsteuersatz)\r\n     Get\r\n         Return m_Mehrwertsteuersaetze\r\n     End Get\r\n     Set(ByVal value<span style=\"color:blue;\"> As <\/span>List(Of Mehrwertsteuersatz))\r\n         m_Mehrwertsteuersaetze = value\r\n     End <span style=\"color:blue;\">Set<\/span>\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Schlie&szlig;lich f&uuml;llen wir diese in der Konstruktor-Methode aus den entsprechenden DbSets:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>New()\r\n     ...\r\n     Kategorien = <span style=\"color:blue;\">New<\/span> List(Of Kategorie)(dbContext.Kategorien)\r\n     Mehrwertsteuersaetze = <span style=\"color:blue;\">New<\/span> List(Of Mehrwertsteuersatz)(dbContext.Mehrwertsteuersaetze)\r\n     DataContext = Me\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Damit stehen die Daten der Kategorien und der Mehrwertsteuers&auml;tze &uuml;ber die &ouml;ffentlichen Variablen <b>Kategorien <\/b>und <b>Mehrwertsteuersaetze <\/b>f&uuml;r den Zugriff aus der XAML-Seite bereit. Diese passen wir nun wie folgt an. Zun&auml;chst stellen wir <b>AutoGenerateColumns<\/b> auf <b>False <\/b>ein, da wir die Spalten nun von Hand definieren:<\/p>\n<pre>&lt;DataGrid x:Name=\"dgProdukte\" ItemsSource=\"{Binding Produkte}\" AutoGenerateColumns=\"False\"&gt;<\/pre>\n<p>Dann folgen die einzelnen Spaltendefinitionen im <b>DataGrid.Columns<\/b>-Element:<\/p>\n<pre>     &lt;DataGrid.Columns&gt;\r\n         &lt;DataGridTextColumn Binding=\"{Binding Path=Name}\" Header=\"Produkt\"&gt;&lt;\/DataGridTextColumn&gt;<\/pre>\n<p>Das Kombinationsfeld realisieren wir als <b>DataGridComboBocColumn<\/b>-Element, f&uuml;r das wir den Header festlegen sowie das gebundene Feld der Datenquelle des DataGrids beziehungsweise des Fensters (<b>SelectedValueBinding<\/b>), den Namen des anzuzeigenden Feldes (<b>DisplayMemberPath<\/b>) und den Namen des gebundenen Feldes (<b>SelectedValuePath<\/b>):<\/p>\n<pre>         &lt;DataGridComboBoxColumn Header=\"Kategorie\" SelectedValueBinding=\"{Binding KategorieID}\"             DisplayMemberPath=\"Name\" SelectedValuePath=\"ID\"&gt;<\/pre>\n<p>Die Datenquelle f&uuml;r das Kombinationsfeld m&uuml;ssen wir &uuml;ber einen Umweg festlegen, indem wir die Eigenschaft <b>ItemsSource <\/b>manuell definieren und f&uuml;llen. Die Daten beziehen wir dabei aus der entsprechenden Eigenschaft des &uuml;bergeordneten <b>Window<\/b>-Elements. Dies legen wir sowohl f&uuml;r die Eigenschaft <b>ElementStyle <\/b>als auch f&uuml;r die Eigenschaft <b>EditingElementStyle <\/b>fest. Dabei liefert <b>ElementStyle <\/b>die Formatierung f&uuml;r den angezeigten Text des Kombinationsfeldes und <b>EditingElementStyle <\/b>die Formatierung f&uuml;r die Elemente in der Liste nach dem Aufklappen:<\/p>\n<pre>             &lt;DataGridComboBoxColumn.ElementStyle&gt;\r\n                 &lt;Style TargetType=\"{x:Type ComboBox}\"&gt;\r\n                 &lt;Setter Property=\"ItemsSource\" Value=\"{Binding Path=DataContext.Kategorien,                     RelativeSource={RelativeSource AncestorType={x:Type Window}}}\" \/&gt;\r\n             &lt;\/Style&gt;\r\n             &lt;\/DataGridComboBoxColumn.ElementStyle&gt;\r\n             &lt;DataGridComboBoxColumn.EditingElementStyle&gt;\r\n                 &lt;Style TargetType=\"{x:Type ComboBox}\"&gt;\r\n                     &lt;Setter Property=\"ItemsSource\" Value=\"{Binding Path=DataContext.Kategorien,                         RelativeSource={RelativeSource AncestorType={x:Type Window}}}\" \/&gt;\r\n                 &lt;\/Style&gt;\r\n             &lt;\/DataGridComboBoxColumn.EditingElementStyle&gt;\r\n         &lt;\/DataGridComboBoxColumn&gt;<\/pre>\n<p>Beim Kombinationsfeld f&uuml;r die Mehrwertsteuers&auml;tze ist noch eine weitere Information in Form eines zus&auml;tzlichen Setters erforderlich, und zwar die Angabe der Formatierung. W&auml;hrend die Mehrwertsteuers&auml;tze in Form der Werte <b>0,07 <\/b>und <b>0,19 <\/b>gespeichert sind, sollen diese als <b>7,00% <\/b>und <b>19,00% <\/b>im Kombinationsfeld erscheinen. Daher definieren wir hier zus&auml;tzlich den Setter f&uuml;r die Eigenschaft <b>ItemStringFormat<\/b>:<\/p>\n<pre>         &lt;DataGridComboBoxColumn Header=\"MwSt.-Satz\" SelectedValueBinding=\"{Binding MehrwertsteuersatzID}\"             DisplayMemberPath=\"Name\" SelectedValuePath=\"ID\"&gt;\r\n             &lt;DataGridComboBoxColumn.ElementStyle&gt;\r\n                 &lt;Style TargetType=\"{x:Type ComboBox}\"&gt;\r\n                     &lt;Setter Property=\"ItemsSource\" Value=\"{Binding Path=DataContext.Mehrwertsteuersaetze,                         RelativeSource={RelativeSource AncestorType={x:Type Window}}}\" \/&gt;\r\n                     &lt;Setter Property=\"ItemStringFormat\" Value=\"P\"&gt;&lt;\/Setter&gt;\r\n                 &lt;\/Style&gt;\r\n             &lt;\/DataGridComboBoxColumn.ElementStyle&gt;\r\n             &lt;DataGridComboBoxColumn.EditingElementStyle&gt;\r\n                 &lt;Style TargetType=\"{x:Type ComboBox}\"&gt;\r\n                     &lt;Setter Property=\"ItemsSource\" Value=\"{Binding Path=DataContext.Mehrwertsteuersaetze,                         RelativeSource={RelativeSource AncestorType={x:Type Window}}}\" \/&gt;\r\n                     &lt;Setter Property=\"ItemStringFormat\" Value=\"P\"&gt;&lt;\/Setter&gt;\r\n                 &lt;\/Style&gt;\r\n             &lt;\/DataGridComboBoxColumn.EditingElementStyle&gt;\r\n         &lt;\/DataGridComboBoxColumn&gt;<\/pre>\n<p>Schlie&szlig;lich folgen noch die Spaltendefinitionen f&uuml;r die &uuml;brigen Felder:<\/p>\n<pre>         &lt;DataGridTextColumn Binding=\"{Binding Path=Einzelpreis}\" Header=\"Einzelpreis\"&gt;&lt;\/DataGridTextColumn&gt;\r\n         &lt;DataGridTextColumn Binding=\"{Binding Path=Bestand}\" Header=\"Bestand\"&gt;&lt;\/DataGridTextColumn&gt;\r\n         &lt;DataGridTextColumn Binding=\"{Binding Path=Mindestbestand}\" Header=\"Mindestbestand\"&gt;&lt;\/DataGridTextColumn&gt;\r\n         &lt;DataGridCheckBoxColumn Binding=\"{Binding Path=Auslaufprodukt}\" Header=\"Auslaufprodukt\"&gt;&lt;\/DataGridCheckBoxColumn&gt;\r\n     &lt;\/DataGrid.Columns&gt;\r\n&lt;\/DataGrid&gt;<\/pre>\n<p>Nach einem Neustart sieht das <b>DataGrid<\/b>-Steuerelement nun wie in Bild 2 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_05\/pic_151_002.png\" alt=\"DataGrid mit Kombinationsfeldern\" width=\"549,6265\" height=\"308,2425\" \/><\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000\"><a style=\"color: #ff0000\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000151\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000151?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000151\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"d3fdc23a4e\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m&ouml;chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens&auml;tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M&ouml;glichkeit, die enthaltenen Daten zu &auml;ndern, zu l&ouml;schen oder durch neue Datens&auml;tze zu erg&auml;nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662018,66052018,44000002,44000022,44000015],"tags":[],"yst_prominent_words":[],"class_list":["post-55000151","post","type-post","status-publish","format-standard","hentry","category-662018","category-66052018","category-Benutzeroberflaeche_mit_WPF","category-Von_Access_zu_NET","category-WPFSteuerelemente"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\u00f6glichkeit, die enthaltenen Daten zu \u00e4ndern, zu l\u00f6schen oder durch neue Datens\u00e4tze zu erg\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"EDM: DataGrid als Datenblatt - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\u00f6glichkeit, die enthaltenen Daten zu \u00e4ndern, zu l\u00f6schen oder durch neue Datens\u00e4tze zu erg\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-27T19:34:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"EDM: DataGrid als Datenblatt - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\u00f6glichkeit, die enthaltenen Daten zu \u00e4ndern, zu l\u00f6schen oder durch neue Datens\u00e4tze zu erg\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#blogposting\",\"name\":\"EDM: DataGrid als Datenblatt - Visual Basic Entwickler\",\"headline\":\"EDM: DataGrid als Datenblatt\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"..\\\/fileadmin\\\/_temp_\\\/2018_05\\\/pic_151_001.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#articleImage\"},\"datePublished\":\"2018-10-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#webpage\"},\"articleSection\":\"2018, 5\\\/2018, Benutzeroberfl\\u00e4che mit WPF, Von Access zu .NET, WPF-Steuerelemente\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/#listItem\",\"name\":\"2018\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/#listItem\",\"position\":2,\"name\":\"2018\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/5\\\/2018\\\/#listItem\",\"name\":\"5\\\/2018\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/5\\\/2018\\\/#listItem\",\"position\":3,\"name\":\"5\\\/2018\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/5\\\/2018\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#listItem\",\"name\":\"EDM: DataGrid als Datenblatt\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/#listItem\",\"name\":\"2018\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#listItem\",\"position\":4,\"name\":\"EDM: DataGrid als Datenblatt\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2018\\\/5\\\/2018\\\/#listItem\",\"name\":\"5\\\/2018\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/\",\"name\":\"EDM: DataGrid als Datenblatt - Visual Basic Entwickler\",\"description\":\"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\\u00f6glichkeit, die enthaltenen Daten zu \\u00e4ndern, zu l\\u00f6schen oder durch neue Datens\\u00e4tze zu erg\\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/EDM_DataGrid_als_Datenblatt\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2018-10-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"EDM: DataGrid als Datenblatt - Visual Basic Entwickler","description":"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\u00f6glichkeit, die enthaltenen Daten zu \u00e4ndern, zu l\u00f6schen oder durch neue Datens\u00e4tze zu erg\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.","canonical_url":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#blogposting","name":"EDM: DataGrid als Datenblatt - Visual Basic Entwickler","headline":"EDM: DataGrid als Datenblatt","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"..\/fileadmin\/_temp_\/2018_05\/pic_151_001.png","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#articleImage"},"datePublished":"2018-10-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#webpage"},"articleSection":"2018, 5\/2018, Benutzeroberfl\u00e4che mit WPF, Von Access zu .NET, WPF-Steuerelemente"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2018\/#listItem","name":"2018"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2018\/#listItem","position":2,"name":"2018","item":"https:\/\/vbentwickler.de\/category\/2018\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2018\/5\/2018\/#listItem","name":"5\/2018"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2018\/5\/2018\/#listItem","position":3,"name":"5\/2018","item":"https:\/\/vbentwickler.de\/category\/2018\/5\/2018\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#listItem","name":"EDM: DataGrid als Datenblatt"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2018\/#listItem","name":"2018"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#listItem","position":4,"name":"EDM: DataGrid als Datenblatt","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2018\/5\/2018\/#listItem","name":"5\/2018"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#webpage","url":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/","name":"EDM: DataGrid als Datenblatt - Visual Basic Entwickler","description":"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\u00f6glichkeit, die enthaltenen Daten zu \u00e4ndern, zu l\u00f6schen oder durch neue Datens\u00e4tze zu erg\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2018-10-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"EDM: DataGrid als Datenblatt - Visual Basic Entwickler","og:description":"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\u00f6glichkeit, die enthaltenen Daten zu \u00e4ndern, zu l\u00f6schen oder durch neue Datens\u00e4tze zu erg\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.","og:url":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2020-03-27T19:34:33+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"EDM: DataGrid als Datenblatt - Visual Basic Entwickler","twitter:description":"Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren m\u00f6chte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datens\u00e4tze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die M\u00f6glichkeit, die enthaltenen Daten zu \u00e4ndern, zu l\u00f6schen oder durch neue Datens\u00e4tze zu erg\u00e4nzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000151","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2024-01-30 15:56:33","updated":"2026-05-16 08:33:08","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2018\/\" title=\"2018\">2018<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2018\/5\/2018\/\" title=\"5\/2018\">5\/2018<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tEDM: DataGrid als Datenblatt\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2018","link":"https:\/\/vbentwickler.de\/category\/2018\/"},{"label":"5\/2018","link":"https:\/\/vbentwickler.de\/category\/2018\/5\/2018\/"},{"label":"EDM: DataGrid als Datenblatt","link":"https:\/\/vbentwickler.de\/EDM_DataGrid_als_Datenblatt\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000151"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000151\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000151"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}