Laden...

Feldinhalte einer Tabelle an Textboxen binden

Erstellt von leotom vor 2 Jahren Letzter Beitrag vor 2 Jahren 346 Views
L
leotom Themenstarter:in
5 Beiträge seit 2021
vor 2 Jahren
Feldinhalte einer Tabelle an Textboxen binden

Hallo Leute, seht mir bitte meine Unerfahrenheit nach, aber ich komme mit den Bindings im WPF nicht weiter. Dazu muss ich sagen, dass ich aus der "VFP-Gegend" komme und dort mit meinem Datenbank- und Tabellendenken noch sehr, sehr verhaftet bin. Dort hatte ich ähnlich wie bei WF die Möglichkeit, auf einfache Weise meine Feldinhalte aus den Tabellen an die Controlls zu binden. Vielleicht bin ich aber mit meiner alten Denke bei WPF völlig auf dem Holzweg. Dann wäre ich für eine kurze Bestätigung sehr dankbar.
Bindings an Listviews kriege ich hin. Aber ich möchte mir einen Datensatz aus einer Tabelle greifen und die einzelnen Feldinhalte in verschiedene Textboxen ausgeben. Mit dem Blättern usw. kommt dann später.
Ich bedanke mich mal schon im Voraus für eure Nachsicht und Geduld!

BG
Thomas

H
523 Beiträge seit 2008
vor 2 Jahren

Kannst Du mal Deinen Code posten, dann können wir Dir mit Sicherheit helfen 🙂

190 Beiträge seit 2012
vor 2 Jahren

Hallo,
hast du dir schon mal diesen Beitrag angesehen?: [Artikel] MVVM und DataBinding

  • Wer lesen kann, ist klar im Vorteil
  • Meistens sitzt der Fehler vorm Monitor
  • "Geht nicht" ist keine Fehlermeldung!
  • "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF

L
leotom Themenstarter:in
5 Beiträge seit 2021
vor 2 Jahren

@Wilfried Danke für den Link. Da hat sich jemand echt Mühe gegeben, um uns Einsteiger zu motivieren😉 Das werde ich durcharbeiten und vielleicht ist das dann ja meine lösung. Trotzdem möchte ich hypersurfs Bitte nachkommen und meinen Code hier reinstellen. Allerdings weiß ich nicht, ob ich das richtig mache. Ich versuch´s einfach mal.


<Window x:Class="BindingTest.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:BindingTest"
        mc:Ignorable="d"
        Title="Plattensammlung" Height="478.945" Width="482.512" Loaded="Window_Loaded">
    <Grid>
        <Label x:Name="label" Content="Nummer" HorizontalAlignment="Left" Margin="85,14,0,0" VerticalAlignment="Top"/>
        <TextBox x:Name="tbxNummer" HorizontalAlignment="Left" Height="24" Margin="270,18,0,0" VerticalAlignment="Top" Width="126" Text="{Binding platten.id, BindsDirectlyToSource=True, StringFormat=\{0:D\}}"/>
        <Label x:Name="label1" Content="Schallplatte" HorizontalAlignment="Left" Margin="85,56,0,0" VerticalAlignment="Top"/>
        <TextBox x:Name="tbxPlattenName" HorizontalAlignment="Left" Height="28" Margin="270,60,0,0" VerticalAlignment="Top" Width="126" Text="{Binding platten.name}"/>
        <ListView x:Name="listView" HorizontalAlignment="Left" Height="207" Margin="85,192,0,0" VerticalAlignment="Top" Width="316">
            <ListView.View>
                <GridView>
                    <GridViewColumn/>
                </GridView>
            </ListView.View>
        </ListView>
        <Label x:Name="label2" Content="Titel" HorizontalAlignment="Left" Margin="85,161,0,0" VerticalAlignment="Top"/>
        <Label x:Name="label3" Content="Regal" HorizontalAlignment="Left" Margin="85,108,0,0" VerticalAlignment="Top"/>
        <TextBox x:Name="tbxRegalNummer" HorizontalAlignment="Left" Height="30" Margin="270,108,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="126"/>
        <Button x:Name="button" Content="Abbrechen" HorizontalAlignment="Left" Height="22" Margin="355,420,0,0" VerticalAlignment="Top" Width="101" Click="button_Click"/>
        <Button x:Name="btnNeu" Content="Neu" HorizontalAlignment="Left" Height="22" Margin="26,420,0,0" VerticalAlignment="Top" Width="106" Click="btnNeu_Click"/>
        <Button x:Name="btnSpeichern" Content="Speichern" HorizontalAlignment="Left" Height="22" Margin="156,420,0,0" VerticalAlignment="Top" Width="102" Click="btnSpeichern_Click"/>

    </Grid>
</Window>



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.Navigation;
using System.Windows.Shapes;
using System.Data;
using System.Data.SqlClient;

namespace BindingTest
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            SqlConnection conPlatten = new SqlConnection();
            conPlatten.ConnectionString = "Data Source=(local)\\MSSQLLocalDB; Initial Catalog=platten; Integrated Security=False";
            conPlatten.Open();
            DataSet dsPlatten = new DataSet();
            SqlDataAdapter daPlatten = new SqlDataAdapter("SELECT * FROM platten WHERE ID=1", conPlatten);
            daPlatten.Fill(dsPlatten, "Platten");
            conPlatten.Close();
            DataTable dtPlatten = dsPlatten.Tables["Platten"];

            tbxNummer.DataContext = dtPlatten;          // ab hier bin ich mir nicht mehr sicher, ob das so funktioniert - siehe die Bindings im XAML
            tbxPlattenName.DataContext = dtPlatten;
            tbxRegalNummer.DataContext = dtPlatten;
        }

        private void btnSpeichern_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btnNeu_Click(object sender, RoutedEventArgs e)
        {

        }
    }
}


BG
Thomas

L
leotom Themenstarter:in
5 Beiträge seit 2021
vor 2 Jahren

Hallo Wilfried, der Link hat mir nicht wirklich weitergeholfen. Ist halt doch nur sehr allgemein gehalten. Wie´s jedoch wirklich mit SQL Datenbanktabellen funktioniert, steht da nicht drin. Ich gehe also weiter auf Suche 😉

bg
Thomas

190 Beiträge seit 2012
vor 2 Jahren

So sollte man es auch nicht machen. Schau mal hier [Artikel] Drei-Schichten-Architektur und hier Datenzugriff aus MVVM mit Repository und UnitOfWork?
Und du solltest unbedingt MVVM einsetzen. Dein Code gehört in das ViewModel und nicht in den Code Behind.

  • Wer lesen kann, ist klar im Vorteil
  • Meistens sitzt der Fehler vorm Monitor
  • "Geht nicht" ist keine Fehlermeldung!
  • "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF