Uczę się aktualnie łączenia WPF c# z bazami danych. Na podstawie tego piszę aplikację na uczelnię, jednakże pojawił się pewien problem. O ile zapisywanie do bazy danych zachodzi bez zarzutu, tak odczyt z niej jest dla mnie kłopotliwy. Spędziłem już kilka godzin nad znalezieniem rozwiązania, ale jak na razie bez skutku. Początkowo miałem problem z pobraniem wartości z bazy danych do comboboxa w jednym okienku, pokombinowałem i udało się w końcu to ogarnąć, ale pojawił się kolejny problem - jak różnymi sposobami chce pobrać wartość wybranego pola combobox, czy też po prostu wartość z bazy danych poprzez Linq, zamiast otrzymać ową wartość, otrzymuje zwrotnie nazwa_bazy_danych.nazwa_tabeli (w moim przypadku plastus.posts). Macie jakies pomysły, jak to ogarnąć? Poniżej zamieszczam kod. Sorki za sporo kodu - śmieci w komentarzach, ale są tam niektóre użyte pomysły, które też nie działały, ale zostawiłem je "na później", w razie jakbym chciał na nich jeszcze pracować. Bazę danych utworzyłem w sql server. Bardzo prosze Was o pomoc, bo powoli kończą mi sie pomysły jak i tutki na necie, a chce to skończyć (i nauczyć się w 100% podstaw robienia tego typu aplikacji, abym potem mógl się w tym rozwijać)
Kod window1.xaml.cs
Code: Zaznacz cały
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 plastusiowy_pamietnik
{
/// <summary>
/// Logika interakcji dla klasy Window1.xaml
/// </summary>
public partial class Window1 : Window
{
DateTime kal;
public Window1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
/*
var context = new plastusEntities2();
var post = new posts()
{
title = WpisTytul.Text,
text = WpisText.Text,
tags = tags.Text,
whenAdded = DateTime.Now
};
context.posts.Add(post);
context.SaveChanges();
var idPosta = context.posts
.Where(b => b.title == WpisTytul.Text)
.Select(s => s.id);*/
DateTime kal = (DateTime)kalendarz.SelectedDate;
Window2 third = new Window2(kal);
third.ShowDialog();
}
}
}
Code: Zaznacz cały
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 plastusiowy_pamietnik
{
/// <summary>
/// Logika interakcji dla klasy Window2.xaml
/// </summary>
public partial class Window2 : Window
{
public Window2(DateTime kal)
{
InitializeComponent();
/*
using (plastusEntities2 ctx = new plastusEntities2())
{
var zapytanie = ctx.posts.ToList().Select(m => m).ToList();
lista.ItemsSource = zapytanie.ToString();
lista.DisplayMemberPath = "title";
}
*/
plastusEntities2 dc = new plastusEntities2();
var stu = from plastusEntities2 in dc.posts where plastusEntities2.whenAdded == kal
select plastusEntities2;
lista.ItemsSource = stu.ToList();
lista.DisplayMemberPath = "title";
}
//var zapytanie = ctx.posts.ToList().Select(m => m).Where(b => b.whenAdded == kalendarz).ToList();
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void pobierzPoDacie()
{
/*
List<posts> posty = new List<posts>();
var context = new plastusEntities2();
posty = context.posts.Where(b => b.whenAdded == kalendarz).Select(s => s).ToList();
if (String.IsNullOrEmpty(posty.ToString()))
MessageBox.Show(":)");
*/
}
private void wybierz_Click(object sender, RoutedEventArgs e)
{
/*
plastusEntities2 dc = new plastusEntities2();
var stu = from plastusEntities2 in dc.posts
where plastusEntities2.id == lista.SelectedIndex+1
select plastusEntities2;
*/
//string tytul = lista.Items[lista.SelectedIndex].ToString();
string tytul = lista.Items[lista.SelectedIndex].ToString();
plastusEntities2 dc = new plastusEntities2();
var stu = from plastusEntities2 in dc.posts
where plastusEntities2.title == tytul
select plastusEntities2;
MessageBox.Show(lista.Items[lista.SelectedIndex].ToString());
foreach (var cust in stu)
{
title.Text = cust.title;
text.Text = cust.text;
}
}
/*
private void lista_Loaded(object sender, RoutedEventArgs e)
{
}*/
}
}