Diskuze: Načtení do DataGrid
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
No, záleží na co to má být.
Pokud chceš zobrazit data ze 2 tabulek v jednom gridView, tak doporučuji na
úrovni SQL udělat třeba LEFT (či RIGTH) OUTER JOIN (případně FULL OUTER
JOIN , podle situace)
např:
SELECT *
FROM PredvolbaTel
LEFT OUTER JOIN Psc
ON PredvolbaTel.ID = Psc.PredvolbaTelID
Pak ve vlastnostech GridView můžeš použít AutoGenerateColumns. Pokud
je True, automaticky ti vygeneruje sloupce podle sloupců tabulky z
databáze.
Nebo (což je praktičtější pro uživatele) nastavíš
AutoGenerateColumns="false" a pak přidáš sloupce ručně (případně v
designéru):
<asp:GridView ID="Predvolby" runat="server" AutoGenerateColumns="False" DataKeyNames="PredvolbaID">
<Columns>
<asp:BoundField DataField="Predvolba" HeaderText="Předvolba telefonního čísla" />
</Columns>
</asp:GridView>
Příklad, který jsem uvedl, není to pravé ořechové. Dám jiný přehlednější.
Mám např. tabulku Firma ( Id, Firma, Ulice, PscId) a dále tabulku Psc (Id, Obec, CastObce, Psc).
Na form potřebuji v jednom dataGrid zobrazit: Id, Firma, Ulice, PSCId, Obec, CastObce, Psc) Oboje Id bude následně visible = false.
Tohle asi bude srozumitelnější. Píši to C# a databázi mám MS-SQL 2008 Expres.
Pak tedy SQL bude vypadat takto:
SELECT F.Id, F.Firma, F.Ulice, F.PSCId, P.Obec, P.CastObce, P.Psc
FROM Firma F
LEFT OUTER JOIN Psc P
ON F.PSCId = P.ID
No a v GridView to už bude jak jsem psala prve.
(Doporučuji používat vlastnost DataKeyNames, kam se dává Id záznamu. Lepe
se pak s tím pracuje později v C#.)
Tedy:
<asp:GridView ID="Firmy" runat="server" AutoGenerateColumns="False" DataKeyNames="ID">
<Columns>
<asp:BoundField DataField="Firma" HeaderText="Název firmy" />
<asp:BoundField DataField="Ulice" HeaderText="Ulice" />
...
<asp:BoundField DataField="Id" Visible="false" />
</Columns>
</asp:GridView>
Ještě jedna, možná hloupá otázka, jak otevřu ten designer? Já ho zatím nepoužíval. Mám VS2010 Profi. Dík
Ve VS si můžeš vybrat zobrazení dole pod kódem (zdroj - designer(návrh) - split)
Tak už mi to funguje. Mám ještě jeden dotaz, když budu takhle spojovat více tabulek, lze zadat vícekrát rovnost jednotlivých buněk (ON F.PscId = P.ID) a případně jak se oddělují od sebe. Já bych to viděl čárkou, nebo středníkem (ON F.PscId = P.ID, BankId = BankaId)?
když si dáš v designeru konfiguraci datového zdroje, můžeš si tam toto
spojení více tabulek naklikat a on ti z toho vyplivne, jak má výsledný SQL
dotaz vypadat, ale rozhodně to nelze spojovat čárkou ani středníkem,
protože je to v podstatě podmínka a tam platí buď všechny ("AND") nebo jen
některé ("OR")
Tak to jsem ráda, že ti to funguje
Na další spojení bys měl psát další JOIN
např.
FROM Firma F
LEFT OUTER JOIN Psc P
ON F.PSCId = P.ID
LEFT OUTER JOIN BanovniUcet B
ON B.ID = F.BankovniUcetID
Možná zkus mrknout na nějaké články o SQL...
Zobrazeno 11 zpráv z 11.