Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

WPF Vorlage: Datensätze in einer Tabelle verwalten CRUD

 

 

Das folgende Code Beispiel stellt eine einfache Tabellenverwaltung für Datensätze dar.

Dabei können in einer Tabelle:

 

1.     Datensätze erstellt werden (New, Create)

2.     Daten angezeigt werden (Read)

3.     Daten geändert werden (Update)

4.     Datensätze gelöscht werden (Delete)

 

 

CRUD: Create Read Update Delete

 

 

 

WPF Seite

Frontpage, XAML Code in WPF

Die Front-Seite enthält eine Tabelle mit den Datensätzen, die Textfelder zur Anzeige und zum Ändern und Buttons zum speichern, Neu erstellen und zum Löschen von Daten

 

<Page x:Class="Schichtplaner.Page_Base_Mitarbeiter"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:Schichtplaner"

        mc:Ignorable="d"

        Title="Mitarbeiter" Height="450" Width="800"  FontSize="12pt">

 

    <Grid Margin="0,0,0,10">

        <Grid.RowDefinitions>

            <RowDefinition Height="40"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>

 

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="387*"/>

            <ColumnDefinition Width="406*"/>

        </Grid.ColumnDefinitions>

 

        <Label Content="Mitarbeiter" 

               Margin="10,10,0,0"

               Grid.Row="0" Grid.Column="0" 

               />

        <DataGrid x:Name="ctlDataGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"

                 AutoGenerateColumns="False"

                 GridLinesVisibility="All"

                 Background="#F0f0f0"

                 ItemsSource="{Binding}" 

                 SelectionMode="Single" 

                 IsReadOnly="True" 

                 MouseDoubleClick="ctlDataGrid_MouseDoubleClick"

                  SelectionChanged="CtlDataGrid_SelectionChanged"

                  HeadersVisibility="All"                  

                  Grid.Row="1" 

                  

                 >

 

            <DataGrid.Columns >

                <DataGridTextColumn Header="ID" Binding="{Binding IDMitarbeiter}"/>

                <DataGridTextColumn Header="Nachname" Binding="{Binding Nachname}"/>

                <DataGridTextColumn Header="Vorname" Binding="{Binding Vorname}"/>

                <DataGridTextColumn Header="PersonalNr" Binding="{Binding Personalnummer}" Width="*"/>

 

 

 

            </DataGrid.Columns>

        </DataGrid>

 

        <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="1" Margin="0.8,0,-0.4,0">

            <Button x:Name="BtnSpeichern" Content="Speichern" Width="99"

                Click="BtnSpeichern_Click"   />

            <Button x:Name="BtnNeu" Content="Neu" Width="99"

                Click="BtnNeu_Click"   Margin="6,0,0,0" />

            <Button x:Name="BtnLoeschen" Content="Löschen" Width="99"

                Click="BtnLoeschen_Click"   Margin="6,0,0,0" />

        </StackPanel>

 

        <!--========< Grid_Eingabe Texte >=========-->

 

        <Grid x:Name="Grid_Eingabe"  Grid.Row="1" Grid.Column="1" Margin="10" >

            <Grid.RowDefinitions>

                <RowDefinition Height="40"/>

                <RowDefinition Height="40"/>

                <RowDefinition Height="40"/>

                <RowDefinition Height="40"/>

                <RowDefinition Height="40"/>

                <RowDefinition Height="40"/>

                <RowDefinition Height="40"/>

            </Grid.RowDefinitions>

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="120"/>

                <ColumnDefinition Width="*"/>

            </Grid.ColumnDefinitions>

 

 

            <Label Content="ID:" Grid.Column="0" Grid.Row="0" />

            <TextBox x:Name="tbxID" Grid.Column="1" Grid.Row="0"

                    Width="51" HorizontalAlignment="Left" IsReadOnly="True" Background="Transparent"  BorderBrush="Transparent"  />

 

 

            <Label Content="Vorname:" Grid.Row="1" Grid.Column="0"/>

            <TextBox x:Name="tbxVorname" Grid.Row="1" Grid.Column="1"

                 HorizontalAlignment="Left" Width="265"/>

 

            <Label Content="Nachname:" Grid.Row="2" Grid.Column="0"/>

            <TextBox x:Name="tbxNachname" Grid.Row="2" Grid.Column="1"

                 HorizontalAlignment="Left" Width="265"/>

 

            <Label Content="PersonalNr:" Grid.Row="3" Grid.Column="0"/>

            <TextBox x:Name="tbxPersonalNr" Grid.Row="3" Grid.Column="1"

                 HorizontalAlignment="Left" Width="265"/>

        </Grid>

 

        <!--========</ Grid_Eingabe Texte >=========-->

 

    </Grid>

</Page>

 

 

 

WPF C# Code-Behind Seite

In der Codeseite werden die Daten von einer Datenbank mit Linq geladen.

Dabei werden die Daten in das Datengrid geladen. In der Detailansicht werden der aktuelle Datensatz geladen, neu erstellt, geändert, gespeichert und gelöscht.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Shapes;

 

namespace Schichtplaner

{

 

    public partial class Page_Base_Mitarbeiter : Page

    {

        #region Formular

 

        private dbConnectionString db;

 

        public Page_Base_Mitarbeiter()

        {

            //----< create >----

            InitializeComponent();

 

            db = new dbConnectionString();

            if (db.Database.Connection.State == System.Data.ConnectionState.Closed || db.Database.Connection.State == System.Data.ConnectionState.Broken)

                db.Database.Connection.Open();

 

            load_DataGrid();

 

            //load_Dataset_byID(1);

            //----</ create >----

        }

 

        #endregion  /Formular

 

        #region  Buttons

        //-------------------------< region: Buttons >-------------------

        private void BtnLoeschen_Click(object sender, RoutedEventArgs e)

        {

            if (tbxID.Text != "")

            {

                del_Data();

            }

            else

            {

                MessageBox.Show("Bitte zuerst einen Datensatz auswählen!");

            }

        }

 

        private void BtnNeu_Click(object sender, RoutedEventArgs e)

        {

            Reset_Entry_Fields();

            tbxVorname.Focus();

        }

 

        private void BtnSpeichern_Click(object sender, RoutedEventArgs e)

        {

            if (tbxID.Text == "")

            { add_Data(); }

            else

            {

                save_Data();

            }

 

            load_DataGrid();

        }

 

 

 

 

        //-------------------------</ region: Buttons >-------------------

        #endregion   /Buttons

 

 

        #region  Controls

        //-------------------------< region: Controls >-------------------

        private void ctlDataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)

        {

            tblBase_Mitarbeiter freiertag = (tblBase_Mitarbeiter)ctlDataGrid.SelectedItem;

            load_Dataset_byID(freiertag.IDMitarbeiter);

        }

        private void CtlDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)

        {

            if (ctlDataGrid.SelectedItem != null)

            {

                tblBase_Mitarbeiter freiertag = (tblBase_Mitarbeiter)ctlDataGrid.SelectedItem;

                load_Dataset_byID(freiertag.IDMitarbeiter);

            }

        }

        //-------------------------</ region: Controls >-------------------

        #endregion  /Controls

 

 

 

 

        #region  Methoden

        //-------------------------< region: Methoden >-------------------

        private void Auto_Speichern_event(object sender, TextChangedEventArgs e)

        {

            Auto_Speichern();

        }

        public void Auto_Speichern()

        {

            save_Data();

            //#todo: aktuelle Zeile item refresh

        }

        //-------------------------</ region: Methoden >-------------------

        #endregion  /Methoden

 

 

        #region Datenbank

        //---------------------< region: Datenbank >-------------------------------

        public async void load_Dataset_byID(int ID)

        {

            //----------------< load_Dataset_byID() >----------------

            try

            {

                var data = db.tblBase_Mitarbeiter.FirstOrDefault(id => id.IDMitarbeiter == ID);

                if (data != null)

                {

                    //--< felder fuellen >--

                    tbxID.Text = data.IDMitarbeiter.ToString();

                    tbxVorname.Text = data.Vorname.ToString() ;

                    tbxNachname.Text = data.Nachname.ToString();

                    tbxPersonalNr.Text = data.Personalnummer;

 

                    //--</ felder fuellen >--

                }

                await db.SaveChangesAsync();

 

            }

            catch (Exception ex)

            {

                System.Diagnostics.Debug.WriteLine(ex);

            }

 

            //----------------</ load_Dataset_byID() >----------------

        }

 

        public void save_Data()

        //------------< save_Data() >------------

        {

            string sID = tbxID.Text;

            //< check >

            if (sID == ""return;

            //</ check >

 

            int ID = Convert.ToInt32(sID);

 

            tblBase_Mitarbeiter data;

            data = db.tblBase_Mitarbeiter.SingleOrDefault(n => n.IDMitarbeiter == ID);

            if (data != null)

            {

                data.dtCreated = DateTime.Now;

                data.Vorname = tbxVorname.Text;

                data.Nachname  = tbxNachname.Text;

                data.Personalnummer = tbxPersonalNr.Text;

                

 

                //< save >

                db.SaveChanges();               //ID: -99999->16

                load_DataGrid();

                //</ save >

            }

            //------------</ save_Data() >------------

        }

 

        public void add_Data()

        //------------< add_Data() >------------

        {

            tblBase_Mitarbeiter data = new tblBase_Mitarbeiter();

            data.dtCreated = DateTime.Now;

            data.Vorname = tbxVorname.Text;

            data.Nachname  = tbxNachname.Text;

            data.Personalnummer= tbxPersonalNr.Text ;

 

            //< save >

            db.tblBase_Mitarbeiter.Add(data); //ID: 0->-99999

            db.SaveChanges();               //ID: -99999->16

            load_DataGrid();

            //</ save >

 

            //< new ID >

            int ID = data.IDMitarbeiter;

            //</ new ID >

            tbxID.Text = ID.ToString();

            //------------</ save_Data() >------------

        }

 

        public void del_Data()

        {

            int id = Convert.ToInt32(tbxID.Text);

            tblBase_Mitarbeiter data;

            data = db.tblBase_Mitarbeiter.SingleOrDefault(x => x.IDMitarbeiter == id);

            db.tblBase_Mitarbeiter.Remove(data);

            db.SaveChanges();

            load_DataGrid();

            Reset_Entry_Fields();

        }

 

 

        private void Reset_Entry_Fields()

        {

            tbxID.Text = "";

            tbxVorname.Text = "";

            tbxNachname.Text = "";

            tbxPersonalNr.Text = "";            

        }

 

 

        //---------------------</ region: Datenbank >-------------------------------

        #endregion /Datenbank

 

        #region Grid

        //---------------------< region: Grid >-------------------------------

        private void load_DataGrid()

        {

            //----------------< load_DataGrid() >----------------

            ctlDataGrid.Items.Clear();

 

            try

            {

                //----< Daten laden >----

                //< get_Data >

                var data = (from tbl in db.tblBase_Mitarbeiter

                            orderby tbl.Nachname  ascending

                            select tbl).Take(1000);

                //</ get_Data >

 

                //--< @Loop: Rows >--

                foreach (var row in data)

                {

                    ctlDataGrid.Items.Add(row);

                }

                //--</ @Loop: Rows >--

 

                //----</ Daten laden >----

            }

            catch (Exception ex)

            {

 

                MessageBox.Show(ex.Message);

            }

 

 

            //----------------</ load_DataGrid() >----------------

        }

 

 

        //---------------------</ region: Grid >-------------------------------

        #endregion /Grid

 

 

 

    }

}

 

 

 

Betrifft: Linq EF Entity Framework

Mobile
»
EF: Entity Framework SELECT Abfrage
»
EF: Find Text, DFirst DLookup
»
EF: neuen Datensatz anlegen, wenn kein Treffer gefunden
»
WPF: Datenbank Connection ändern zur Laufzeit
»
EF WPF : Direktes Aufrufen und Durchlaufen einer Tabelle in Entity Framework
»
WPF Datagrid mit neuen Daten laden
»
The cast to value type System.Int32 failed because the materialized value is null
»
Linq: neuen Datensatz erstellen
»
Linq: komplette Tabelle ausgeben
»
Linq: einzelne Spalten ausgeben aus einer SQL Tabelle

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de