Diskuze: DataGrid načtení dat z databáze

C# .NET .NET (C# a Visual Basic) DataGrid načtení dat z databáze American English version English version

Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Zdravím,

pracuji na aplikaci(WPF), ke které jsem přidal databázi do projektu a chtěl bych z vytvořené databáze načítat data do DataGridu.

Nečekal jsem, že o proti WF to bude takový rozdíl, může mi někdo poradit, jak na to ? Předem děkuji ;)

Odpovědět 27.5.2014 20:18
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Lako
Člen
Avatar
Odpovídá na N-nojmi
Lako:

Nejlépe asi:
používej návrhový vzor MVVM, nebo alespoň využívej..
Vytvoř si model a viewModel.
Model ti reprezentuje databázi.
Viemodel ti přenáší data do zobrazení (xamlu)
Při vytváření viemodelu, načti data z databáze.
V datagridu nastav databinding na list (nebo lépe obsevablecollec­tion) na vlastnost ve viewModelu.
jestli to chceš udělat rychle a nezabývat se mvvm příliš (což ale stejně budeš časem muset), tak si vytvoř proměnnou Customers, do té narvi data a udělej:

<DataGrid ItemsSource="{Binding Customers}" />

samo ti to vygeneruje sloupečky, atd..

 
Nahoru Odpovědět 27.5.2014 21:45
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Lako
N-nojmi:

Ok, díky vlítnu na to ;)

Nahoru Odpovědět 28.5.2014 7:42
Není hloupých lidí, jen lidí co málo používají google...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Lako
N-nojmi:

Co bude lepší, vytvořit si databázi přímo v projektu a nebo ji vytvořit v sql server management studiu a pak jí tam přesunout?

Nahoru Odpovědět 28.5.2014 10:26
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

To záleží na tom, kde tu DB chceš mít, jestli jako soubor u aplikace, nebo jestli na nějakém SQL serveru na jiném stroji...
Pokud lokálně, pak je zbytečné ji tvořit mimo visual studio a pak ji přesouvat, je lepší s ní rovnou pracovat ve VS... :-)

Nahoru Odpovědět  +1 28.5.2014 11:54
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Lako
Člen
Avatar
Odpovídá na N-nojmi
Lako:

Pokud budeš používat entity framework (což vřele doporučuji) a codefirst přístup, tak tohle moc řešit nemusíš, vlastně se k db vůbec nedostaneš, z pohledu přístupu tě nezajímá, kde si plave. Jde jenom o to mít správný connection string a správného data providera.

 
Nahoru Odpovědět  -1 28.5.2014 21:31
Avatar
Odpovídá na Lako
Michal Štěpánek:

To ale není odpověď na jeho otázku, že? Musíš si nejdříve určit, kde ta DB bude a pak teprve budeš řešit přístup...

Editováno 28.5.2014 22:50
Nahoru Odpovědět 28.5.2014 22:49
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Lako
Člen
Avatar
Odpovídá na Michal Štěpánek
Lako:

No, nemusíš.
Prostě uděláš apku s databází na lokále (třeba) a když bys chtěl aby to pracovalo se vzdálenou, tak jen změníš connection string. To je právě výhoda výše popsaného přístupu.

 
Nahoru Odpovědět 28.5.2014 23:02
Avatar
Odpovídá na Lako
Michal Štěpánek:

V podstatě máš pravdu, ale když máš jako já VS express, tak tam codefirst použít nejde, musíš použít databasefirst a pak už to je o tom, že si umístění DB musíš nejprve vybrat...

Nahoru Odpovědět 29.5.2014 9:26
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Lako
Člen
Avatar
Odpovídá na Michal Štěpánek
Lako:

Ok, to by bylo logické. Ale to že nejde codefirst v express edici mi přijde divné. Jak jako nejde? Vždyť to je všechno v kódu, nikde nespecifikuješ jaký přístup chceš vlastně použít. Prostě si vytvoříš třídy, označíš je jako dbsety a je to..? Nějaký blogpost, či dokumentace, která by tvojí domněnku potvrzovala?

 
Nahoru Odpovědět 29.5.2014 9:58
Avatar
Odpovídá na Lako
Michal Štěpánek:

Vlastní zkušenost, když jsem chtěl přidat EF model, tak mi to nenabízelo CF, ale jen DF...

Nahoru Odpovědět 29.5.2014 10:32
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Lako
Člen
Avatar
Odpovídá na Michal Štěpánek
Lako:

Co přesně znamená přidat EF model?
Protože když je to codefirst, tak přidáváš třídy..

 
Nahoru Odpovědět 29.5.2014 10:34
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Milan Křepelka:

Michale : Právě, že když děláš code first, tak žádný model neděláš. Modelem jsou tebou vytvořené třídy.

 
Nahoru Odpovědět 29.5.2014 11:40
Avatar
Odpovídá na Milan Křepelka
Michal Štěpánek:

A jak mu řeknu, že z těch tříd chci udělat DB? Tím, že přidám EF model CF

Nahoru Odpovědět 29.5.2014 12:49
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Milan Křepelka:

Tak ještě jednou. Opakování je matka moudrosti. Při přístupu code first žádný model neděláš. Tečka.

Co se tvé otázky týče, tak se to dělá tak, že ty třídy uvedeš ve tvé třídě databázového kontextu.

http://www.entityframeworktutorial.net/…example.aspx

 
Nahoru Odpovědět 29.5.2014 13:26
Avatar
Odpovídá na Milan Křepelka
Michal Štěpánek:

Furt se v tom motám... Musim ještě studovat a opakovat...

Nahoru Odpovědět 29.5.2014 14:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Michal Štěpánek
Milan Křepelka:

Doporučuji investovat dvě hodinky do videa a jistě najdeš cestu ven.

http://www.wug.cz/…co-je-noveho

 
Nahoru Odpovědět 29.5.2014 14:45
Avatar
Lako
Člen
Avatar
Odpovídá na Michal Štěpánek
Lako:

Model == třída
Definice "tabulek" se provádí následovně:

 public class MůjDbContext:DbContext
 {
     public DbSet<Car> Cars { get; set; }
     public DbSet<Cat> Cats { get; set; }
}
 
Nahoru Odpovědět 29.5.2014 15:23
Avatar
Odpovídá na Lako
Michal Štěpánek:

No vidíš, zase jsem o něco moudřejší... :-)
Musím to už konečně pořádně nastudovat, protože zatím mě to EF pořád nějak míjí a nemůžu do toho proniknout... 8-)

Nahoru Odpovědět 29.5.2014 17:21
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.