Ich habe es geschafft, die Datagrid und die Listbox an eine generische Liste zu binden. Jetzt werden alle Daten aus der Datenbank angezeigt. Ich habe jetzt probiert, einen angeklickten Datensatz aus der Datagrid/Listbox an die Textboxen zu binden, aber leider gelingt mir das nur, indem ich
DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.KundenNummerPK
definiere.
Jetzt ist die Textbox an die Datagrid gebunden, sollte aber lieber an die Liste gebunden werden. Ich möchte im Endeffekt, dass ich die Kunden in der Listbox/Datagrid auswählen und deren Daten in den Textboxen automatisch verändern kann.
Hat jemand vielleicht eine Idee, was ich machen könnte? Am besten mit Code Beispielen.
Und danke KeeperOfCoffee für den Hinweis. 👍
MainWindow.xaml
<Window x:Class="..._Kunden.MainWindow"
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:..._Kunden"
mc:Ignorable="d"
Title="MainWindow" Height="679.747" Width="1353.764" WindowStartupLocation="CenterScreen">
<Window.DataContext>
<local:KundenDatenViewModel/>
</Window.DataContext>
<Grid Background="#FF434751" Margin="0,0,-6.8,0.4">
<Label x:Name="labelKundenNummerPK" Content="Kunden Nummer PK:" HorizontalAlignment="Left" Margin="858,6,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxKundenNummerPK" HorizontalAlignment="Left" Height="24" Margin="865,41,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" IsEnabled="False" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.KundenNummerPK , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelOffeneVorgaenge" Content="Offene Vorgänge:" HorizontalAlignment="Left" Margin="858,61,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxOffeneVorgaenge" HorizontalAlignment="Left" Height="24" Margin="865,97,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.OffeneVorgaenge , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelKundenBruttopreise" Content="Bruttopreise:" HorizontalAlignment="Left" Margin="858,115,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxBruttopreise" HorizontalAlignment="Left" Height="24" Margin="865,149,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.Bruttopreise , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelOffenePosten" Content="Offene Posten:" HorizontalAlignment="Left" Margin="858,170,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxOffenePosten" HorizontalAlignment="Left" Height="24" Margin="865,205,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.OffenePosten , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelTransportweg" Content="Transportweg:" HorizontalAlignment="Left" Margin="858,225,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxOffeneTransportweg" HorizontalAlignment="Left" Height="24" Margin="865,260,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.Transportweg , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelPreis" Content="Preis:" HorizontalAlignment="Left" Margin="858,280,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxPreis" HorizontalAlignment="Left" Height="24" Margin="865,316,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.Preis , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelVersandanschrift_" Content="Versandanschrift:" HorizontalAlignment="Left" Margin="858,336,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxVersandanschrift" HorizontalAlignment="Left" Height="24" Margin="865,370,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.Versandanschrift , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelVersicherung" Content="Versicherung:" HorizontalAlignment="Left" Margin="858,391,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxVersicherung" HorizontalAlignment="Left" Height="24" Margin="865,426,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.Versicherung , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelBenutzer" Content="Benutzer:" HorizontalAlignment="Left" Margin="858,442,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxBenutzer" HorizontalAlignment="Left" Height="24" Margin="865,476,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.Benutzer , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label x:Name="labelZeit" Content="Zeit:" HorizontalAlignment="Left" Margin="858,497,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<TextBox x:Name="textBoxZeit" HorizontalAlignment="Left" Height="24" Margin="865,532,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="462" FontWeight="Bold" DataContext="{Binding ListeKundenDaten}" Text="{Binding ElementName=dataGrid, Path=SelectedItem.Zeit , Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<Button x:Name="buttonSpeichern" Content="Speichern" HorizontalAlignment="Left" Margin="260,593,0,0" VerticalAlignment="Top" Width="75" Height="25" Background="#FFCB4141" FontWeight="Bold" Foreground="White" Click="ButtonSpeichern_Click" IsEnabled="False"/>
<Button x:Name="buttonLoeschen" Content="Löschen" HorizontalAlignment="Left" Margin="1251,561,0,0" VerticalAlignment="Top" Width="75" Height="25" Background="#FFCB4141" FontWeight="Bold" Foreground="White" Click="ButtonLoeschen_Click"/>
<Button x:Name="buttonBearbeiten" Content="Bearbeiten" HorizontalAlignment="Left" Margin="1171,561,0,0" VerticalAlignment="Top" Width="75" Height="25" Background="#FFCB4141" FontWeight="Bold" Foreground="White" Click="ButtonBearbeiten_Click"/>
<Button x:Name="buttonClearListBoxUndTextBoxen" Content="Clear" HorizontalAlignment="Left" Margin="1251,591,0,0" VerticalAlignment="Top" Width="75" Height="25" Background="#FFCB4141" FontWeight="Bold" Foreground="White" Click="ButtonClearListBoxUndTextBoxen_Click"/>
<Label x:Name="labelListBoxUndTextBoxenClear" Content="Listbox und Textboxen:" HorizontalAlignment="Left" Margin="965,585,0,0" VerticalAlignment="Top" Foreground="White" FontWeight="Bold" FontSize="18"/>
<Button x:Name="buttonReload" Content="Reload" HorizontalAlignment="Left" Margin="1171,591,0,0" VerticalAlignment="Top" Width="75" Height="25" Background="#FFCB4141" FontWeight="Bold" Foreground="White" Click="ButtonReload_Click"/>
<RadioButton x:Name="radioButtonKundenNrPK" Content="Neuen Kunden erstellen" HorizontalAlignment="Left" Margin="27,593,0,0" VerticalAlignment="Top" FontSize="18" FontWeight="Bold" Checked="RadioButtonKundenNrPK_Checked" Unchecked="RadioButtonKundenNrPK_Unchecked" Foreground="White"/>
<ListBox x:Name="listBox" HorizontalAlignment="Left" Height="278" Margin="27,28,0,0" VerticalAlignment="Top" Width="812" Background="#FF354D93" SelectionChanged="ListBox_SelectionChanged" FontWeight="Bold" Foreground="White" ItemsSource="{Binding ListeKundenDaten, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical" IsItemsHost="True" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0 0 10 0">
<TextBlock Text="{Binding KundenNummerPK, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0" />
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding OffeneVorgaenge, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding Bruttopreise, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding OffenePosten, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding Transportweg, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding Preis, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding Versandanschrift, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding Versicherung, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding Benutzer, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
<TextBlock Text="|" Margin="0 0 10 0"/>
<TextBlock Text="{Binding Zeit, UpdateSourceTrigger=PropertyChanged}" Margin="0 0 10 0"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Height="278" Margin="27,310,0,0" VerticalAlignment="Top" Width="812" Background="#FF354D93" Foreground="Black" AutoGenerateColumns="False" ItemsSource="{Binding ListeKundenDaten, UpdateSourceTrigger=PropertyChanged}" SelectionChanged="DataGrid_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="KundenNummerPK" Binding="{Binding KundenNummerPK, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="OffeneVorgaenge" Binding="{Binding OffeneVorgaenge, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Bruttopreise" Binding="{Binding Bruttopreise, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="OffenePosten" Binding="{Binding OffenePosten, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Transportweg" Binding="{Binding Transportweg, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Preis" Binding="{Binding Preis, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Versandanschrift" Binding="{Binding Versandanschrift, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Versicherung" Binding="{Binding Versicherung, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Benutzer" Binding="{Binding Benutzer, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Zeit" Binding="{Binding Zeit, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
MainWindow.xaml.cs (Ganz unten im Code steht die komplette Aufgabenstellung als Kommentar)
using System.Windows;
using System.Windows.Controls;
namespace MLAN_Kunden
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
KundenDatenViewModel kundenDatenViewModel = new KundenDatenViewModel();
kundenDatenViewModel.LadeDatenInsKundenDatenViewmodel();
DataContext = kundenDatenViewModel;
}
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (listBox.SelectedIndex != -1)
{
KundenDatenViewModel kundenDatenViewModel = new KundenDatenViewModel();
kundenDatenViewModel.test(listBox.SelectedIndex);
this.DataContext = kundenDatenViewModel;
}
}
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void ButtonSpeichern_Click(object sender, RoutedEventArgs e)
{
}
private void ButtonBearbeiten_Click(object sender, RoutedEventArgs e)
{
}
private void ButtonLoeschen_Click(object sender, RoutedEventArgs e)
{
}
private void ButtonClearListBoxUndTextBoxen_Click(object sender, RoutedEventArgs e)
{
}
private void ButtonReload_Click(object sender, RoutedEventArgs e)
{
}
private void RadioButtonKundenNrPK_Checked(object sender, RoutedEventArgs e)
{
}
private void RadioButtonKundenNrPK_Unchecked(object sender, RoutedEventArgs e)
{
}
}
}
/*
In der ... können u.a. Kundendaten verwaltet werden.
Es soll eine Applikation erstellt werden, die die Kundendaten in eine Liste/Tabelle anzeigt und mit der die Kundendaten bearbeitet werden können.
Links soll die Tabelle/Liste mit allen Kunden zu sehen sein und rechts die einzelnen Eingabefelder für einen Kundendatensatz.
Wir links in der Tabelle ein Kundendatensatz ausgewählt, so sind die Daten rechts in den Eingabecontrols zu sehen und können bei Bedarf geändert und gespeichert werden.
Die Kundennummer (Primärschlüssel) darf nicht geändert werden, da dieser von der Datenbank verwaltet wird.
Die Tabelle in der Datenbank heißt "Kunden".
Der Primärschlüssel/Kundennummer heißt "KDNUMMER".
Es müssen nicht alle Tabellenfelder in der Tabelle und rechts zhur Bearbeitung angezeigt werden, 10 Felder sollen ausreichend sein.
Es ist die Datenbank aus Aufgabe2 zu verwenden.
Die einzelnen Tabellenfelder sind in der Datei Table_Kunden.txt beschrieben.
Es ist sich auch mit folgenden Git-Befehlen/Funktionen (Team-Explorer in Visual Studio) zu beschäftigen:
- Fetch (Abrufen)
- Pull (Remote-Änderungen in die lokale Arbeitskopie übernehmen/überspielen)
- Commit
- Push
----------------------------------------------------------------------------------------------------------
Datenbindung Model -> ViewModel -> View
Ziel: Es sollen sämtliche direkten Verweise auf die Controls (ListBox, TextBox, etc.) in den Klassen entfernt werden und die Zuweisung der einzelnen Kundendaten durch Datenbindung der Properties erreicht werden.
Beispiel: statt textBoxName.Text = "Gerd" wird geschrieben kunde.Name = "Gerd". kunde ist hier das Objekt der Model-Klasse "Kunde" und besitzt die Property "Name". Diese Property wird an die Text-Property der TextBox in der View (XAML) gebunden.
Der ListBox werden nicht einzeln die Items durch die hinzugefügt (listBox.Items.Add(...)), sondern an eine List von Kunden gebunden.
Benötigt wird die Model-Klasse für einen bzw. die Kunden (hier schon vorhanden in KundenDaten.cs).
Eine generische List zur Bindung der aller Kundendaten an die ListBox.
MVVM Design pattern (Entwurfsmuster):
https://openbook.rheinwerk-verlag.de/visual_csharp_2012/1997_28_005.html
DataTable belegeDaten = new DataTable(); ViewModel holt Kundendaten aus der Datenbank und erhält somit eine generische Liste mit den Kundendatensätzen --> List<KundenDaten>
Die Liste wird an die ItemsSource der ListBox bzw. der Tabelle gebunden (DataGrid).
KundenDatenViewModel besitzt eine Initial-Methode zum Holen der Datensätze über die Datenbankklasse.
MainWindow.xaml.cs
var kundenDatenViewModel = new KundenDatenViewModel();
KundenDatenViewModel.Init();
this.DataContext = KundenDatenViewModel;
Im DataGrid die Spalten (Columns) einzeln definieren und an die jeweilige Eigenschaft des Kunden-Model binden (pro Kunden-Property eine Spalte).
*/
KundenViewModel.cs
using System.Collections.Generic;
using System.ComponentModel;
namespace ..._Kunden
{
class KundenDatenViewModel : INotifyPropertyChanged
{
private Datenbank datenbank = new Datenbank();
public event PropertyChangedEventHandler PropertyChanged;
private List<KundenDaten> listeKundenDaten = new List<KundenDaten>();
private string kundenNummerPK;
private string offeneVorgaenge;
private string bruttopreise;
private string offenePosten;
private string transportweg;
private string preis;
private string versandanschrift;
private string versicherung;
private string benutzer;
private string zeit;
public List<KundenDaten> ListeKundenDaten
{
get { return listeKundenDaten; }
set
{
if (listeKundenDaten == value) return;
listeKundenDaten = value;
OnPropertyChanged("ListeKundenDaten");
}
}
public string KundenNummerPK
{
get { return kundenNummerPK; }
set
{
if (kundenNummerPK == value) return;
kundenNummerPK = value;
OnPropertyChanged("KundenNummerPK");
}
}
public string OffeneVorgaenge
{
get { return offeneVorgaenge; }
set
{
if (offeneVorgaenge == value) return;
offeneVorgaenge = value;
OnPropertyChanged("OffeneVorgaenge");
}
}
public string Bruttopreise
{
get { return bruttopreise; }
set
{
if (bruttopreise == value) return;
bruttopreise = value;
OnPropertyChanged("Bruttopreise");
}
}
public string OffenePosten
{
get { return offenePosten; }
set
{
if (offenePosten == value) return;
offenePosten = value;
OnPropertyChanged("OffenePosten");
}
}
public string Transportweg
{
get { return transportweg; }
set
{
if (transportweg == value) return;
transportweg = value;
OnPropertyChanged("Transportweg");
}
}
public string Preis
{
get { return preis; }
set
{
if (preis == value) return;
preis = value;
OnPropertyChanged("Preis");
}
}
public string Versandanschrift
{
get { return versandanschrift; }
set
{
if (versandanschrift == value) return;
versandanschrift = value;
OnPropertyChanged("Versandanschrift");
}
}
public string Versicherung
{
get { return versicherung; }
set
{
if (versicherung == value) return;
versicherung = value;
OnPropertyChanged("Versicherung");
}
}
public string Benutzer
{
get { return benutzer; }
set
{
if (benutzer == value) return;
benutzer = value;
OnPropertyChanged("Benutzer");
}
}
public string Zeit
{
get { return zeit; }
set
{
if (zeit == value) return;
zeit = value;
OnPropertyChanged("Zeit");
}
}
protected internal void OnPropertyChanged(string propertyname)
{
PropertyChangedEventHandler propertyChanged = PropertyChanged;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
}
}
public void LadeDatenInsKundenDatenViewmodel()
{
listeKundenDaten = datenbank.KundenLesenNew();
}
public List<KundenDaten> test(int index)
{
listeKundenDaten = datenbank.KundenLesenNew();
listeKundenDaten.Add(
new KundenDaten
{
KundenNummerPK = listeKundenDaten[index].KundenNummerPK,
OffeneVorgaenge = listeKundenDaten[index].OffeneVorgaenge,
Bruttopreise = listeKundenDaten[index].Bruttopreise,
OffenePosten = listeKundenDaten[index].OffenePosten,
Transportweg = listeKundenDaten[index].Transportweg,
Preis = listeKundenDaten[index].Preis,
Versandanschrift = listeKundenDaten[index].Versandanschrift,
Versicherung = listeKundenDaten[index].Versicherung,
Benutzer = listeKundenDaten[index].Benutzer,
Zeit = listeKundenDaten[index].Zeit
});
return listeKundenDaten;
}
}
}
KundenDaten.cs
using System.Collections.Generic;
namespace ..._Kunden
{
public class KundenDaten
{
public List<KundenDaten> ListeKundenDaten;
public string KundenNummerPK { get; set; }
public string OffeneVorgaenge { get; set; }
public string Bruttopreise { get; set; }
public string OffenePosten { get; set; }
public string Transportweg { get; set; }
public string Preis { get; set; }
public string Versandanschrift { get; set; }
public string Versicherung { get; set; }
public string Benutzer { get; set; }
public string Zeit { get; set; }
public KundenDaten()
{
}
public string GetCSVSatz()
{
string getCSVSatzString;
getCSVSatzString = KundenNummerPK + " / " + OffeneVorgaenge + " / " + Bruttopreise + " / " + OffenePosten + " / " + Transportweg + " / " + Preis + " / " + Versandanschrift + " / " + Versicherung + " / " + Benutzer + " / " + Zeit + "\n";
//getCSVSatzString = KundenNummerPK + ";" + OffeneVorgaenge + ";" + Bruttopreise + ";" + OffenePosten + ";" + Transportweg + ";" + Preis + ";" + Versandanschrift + ";" + Versicherung + ";" + Benutzer + ";" + Zeit + ";";
return getCSVSatzString;
}
}
}
Datenbank.cs
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace ..._Kunden
{
class Datenbank
{
public readonly string sqlPath = "SERVER=...;DATABASE=...;UID=...;PASSWORD='...';";
public DataTable dataTable = new DataTable();
private List<KundenDaten> listeKundenDaten = new List<KundenDaten>();
public Datenbank()
{
}
public List<KundenDaten> KundenLesenNew()
{
using (SqlConnection sqlConnection = new SqlConnection(sqlPath))
{
sqlConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand("SELECT KDNUMMER, KDOPVA, KDBRUTTO, KDOPRG, KDEMTRWEG, KDPREISKZ, KDVANUMMER, KDVERSICH, KDWSNAME, KDWSZEIT FROM KUNDEN ORDER BY KDNUMMER", sqlConnection))
{
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand);
sqlDataAdapter.Fill(dataTable);
foreach (DataRow dataRow in dataTable.Rows)
{
listeKundenDaten.Add(
new KundenDaten
{
KundenNummerPK = dataRow["KDNUMMER"].ToString(),
OffeneVorgaenge = dataRow["KDOPVA"].ToString(),
Bruttopreise = dataRow["KDBRUTTO"].ToString(),
OffenePosten = dataRow["KDOPRG"].ToString(),
Transportweg = dataRow["KDEMTRWEG"].ToString(),
Preis = dataRow["KDPREISKZ"].ToString(),
Versandanschrift = dataRow["KDVANUMMER"].ToString(),
Versicherung = dataRow["KDVERSICH"].ToString(),
Benutzer = dataRow["KDWSNAME"].ToString(),
Zeit = dataRow["KDWSZEIT"].ToString()
});
foreach (KundenDaten kundenDaten in listeKundenDaten)
{
}
}
return listeKundenDaten;
}
}
}
public void KundenDatenBearbeiten(KundenDatenViewModel kundenDatenViewModel)
{
using (SqlConnection sqlConnection = new SqlConnection(sqlPath))
{
sqlConnection.Open();
string sqlAnweisung;
SqlCommand sqlCommand = sqlConnection.CreateCommand();
sqlAnweisung = string.Format("UPDATE KUNDEN SET KDNUMMER = '{0}', KDOPVA = '{1}', KDBRUTTO = '{2}', KDOPRG = '{3}', " +
"KDEMTRWEG = '{4}', KDPREISKZ = '{5}', KDVANUMMER = '{6}', KDVERSICH = '{7}', KDWSNAME = '{8}', KDWSZEIT = '{9}' ",
kundenDatenViewModel.KundenNummerPK, kundenDatenViewModel.OffeneVorgaenge.Replace(",", "."), kundenDatenViewModel.Bruttopreise, kundenDatenViewModel.OffenePosten.Replace(",", "."), kundenDatenViewModel.Transportweg, kundenDatenViewModel.Preis, kundenDatenViewModel.Versandanschrift, kundenDatenViewModel.Versicherung, kundenDatenViewModel.Benutzer, kundenDatenViewModel.Zeit);
sqlAnweisung += string.Format("WHERE KDNUMMER = '{0}';", kundenDatenViewModel.KundenNummerPK);
sqlCommand.CommandText = sqlAnweisung;
sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
}
}
}
}
Logik.cs
using System.Windows.Controls;
namespace ..._Kunden
{
class Logik
{
public Logik()
{
}
public void ListBoxTextBoxenClear(ListBox listBox, TextBox textBoxKundenNummerPK, TextBox textBoxOffeneVorgaenge, TextBox textBoxBruttopreise, TextBox textBoxOffenePosten, TextBox textBoxTransportweg, TextBox textBoxPreis, TextBox textBoxVersandanschrift, TextBox textBoxVersicherung, TextBox textBoxBenutzer, TextBox textBoxZeit)
{
listBox.Items.Clear();
textBoxKundenNummerPK.Text = "";
textBoxOffeneVorgaenge.Text = "";
textBoxBruttopreise.Text = "";
textBoxOffenePosten.Text = "";
textBoxTransportweg.Text = "";
textBoxPreis.Text = "";
textBoxVersandanschrift.Text = "";
textBoxVersicherung.Text = "";
textBoxBenutzer.Text = "";
textBoxZeit.Text = "";
}
public void NurTextBoxenClear(TextBox textBoxKundenNummerPK, TextBox textBoxOffeneVorgaenge, TextBox textBoxBruttopreise, TextBox textBoxOffenePosten, TextBox textBoxTransportweg, TextBox textBoxPreis, TextBox textBoxVersandanschrift, TextBox textBoxVersicherung, TextBox textBoxBenutzer, TextBox textBoxZeit)
{
textBoxKundenNummerPK.Text = "";
textBoxOffeneVorgaenge.Text = "";
textBoxBruttopreise.Text = "";
textBoxOffenePosten.Text = "";
textBoxTransportweg.Text = "";
textBoxPreis.Text = "";
textBoxVersandanschrift.Text = "";
textBoxVersicherung.Text = "";
textBoxBenutzer.Text = "";
textBoxZeit.Text = "";
}
}
}