Avatar
N-nojmi
Člen
Avatar
N-nojmi:

ZDRAVÍM,

zasekl jsem se na určitém bodě, při programování aplikace v ASP.NETu.

Jde o to, že používám na vypsání dat z tabulky T_Dic v databázi Repeater, což není probém, ale problém je, že do tabulky, kterou vytvářím v Repeatru chci po poslední buňky vložit data z jiné tabulky v databázi, které jsou závislé na té první.....

Snad kód řekne víc:

<asp:Repeater ID="Repeater1" runat="server">

        <ItemTemplate>
                    <table>
                        <tr>
                            <td>Osobní číslo:</td>
                            <td><%# Eval("OsCislo") %></td>
                        </tr>
                        <tr>
                            <td>Řešitel:</td>
                            <td><%# Eval("Resitel") %></td>
                        </tr>
                        <tr>
                            <td>Založení záznamu:</td>
                            <td><%# Eval("DatumZalozeni") %></td>
                        </tr>
                        <tr>
                            <td>DIČ:</td>
                            <td><%# Eval("Dic") %></td>
                        </tr>
                        <tr>
                            <td>Poznámka:</td>
                            <td><%# Eval("Poznamka") %></td>
                        </tr>
                        <tr>
                            <td>Šetřené zdaňovací období:</td>
                            <td>
                                <asp:Label ID="labelobdobi" runat="server" Text=''></asp:Label>
                            </td>
                        </tr>
                    </table>

        </ItemTemplate>

    </asp:Repeater>
Editováno 17.3.2015 13:54
Odpovědět 17.3.2015 13:53
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Odpovídá na N-nojmi
Michal Štěpánek:

Jestli jsem to dobře pochopil, chceš podle té buňky (OsCislo) vytahovat data z jiné tabulky. V první řadě musí být Bind, ne Eval a pak si jednoduše přidáš další SqlDataSource přímo do toho výpisu repeateru a vytáhneš z něj data.

Editováno 17.3.2015 14:26
Nahoru Odpovědět 17.3.2015 14:26
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Ano, pochopil jsi to správně....

Co se týče Eval, potřebuju jenom zobrazit data uživateli.

Příklad:
Mám dvě tabulky, jedna je "Města" druhá "Ulice". Tabulky jsou propojené ID_Mesto. Přes repeater chci vypsat všechna města a u každého města všechny ulice daného města.

Je správná cesta, řešit to Repeatrem a nebo by se hodilo jiné řešení, ještě mě napadlo vložiz repeater do repeatru.

Mohl by jsi trochu rozvést přidání SqlDataSource do repeatru a jeho následný vytažení dat, který chci zobrazit?

Díky

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

Nějak jsem nepochopil, jak jsou tabulky propojené "ID_Mesto"? Nicméně máš SqlDataSource, kterým vytahuješ data Měst. To následně zobrazíš v repeateru. Někam do toho repeateru si uděláš hiddenfield s tím ID_Mesto, ale to musí být Bind, ne Eval a tetno fiddenfield pak dáš jako parametr do dalšího SqlDataSource, který umístíš dovnitř toho repeateru a budeš s ním vytahovat údaje o ulicích...
Kdyby ten hiddenfield byl taky jen Eval, nic by se ti nepředalo do toho dalšího SqlDataSource...

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

Bohužel, ale při zakládání dalšího SqlDataSource, nemohu najít HiddemField v kontrolkach ve WHERE.

<asp:HiddenField ID="HiddenFieldDic" runat="server" Value="<%# Bind("ID_Mesto") %>" />

u HiddemField se zobrazuje tohle upozornění:** A call to Bind must be assigned to a property of a control inside a template.**

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

Tak si to nejdříve celé (ten vnořený SqlDataSource) udělej mimo repeater a pak to jen vlož do repeateru

Nahoru Odpovědět 17.3.2015 17:22
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
N-nojmi
Člen
Avatar
Odpovídá na Michal Štěpánek
N-nojmi:

Mám tohle a nefachá to:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString='<%$ ConnectionStrings:zamest %>' SelectCommand="SELECT [ID_Dic] FROM [T_Dic]"></asp:SqlDataSource>

    <asp:HiddenField ID="HiddenField1" runat="server" Value="<%# Eval("ID_Dic") %>"/>

    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString='<%$ ConnectionStrings:zamest %>' SelectCommand="SELECT [Obdobi] FROM [T_Obdobi] WHERE ([ID_Dic] = @ID_Dic)">
        <SelectParameters>
            <asp:ControlParameter ControlID="HiddenField1" PropertyName="Value" Name="ID_Dic" Type="Int32"></asp:ControlParameter>
        </SelectParameters>
    </asp:SqlDataSource>

    <asp:Repeater ID="Repeater1" runat="server">

        <ItemTemplate>
            <div class="accordion">
                <div class="hlavni">
                    <%# Eval("Dic") %>
                </div>
                <div class="rozbalovany">
                    <table>
                        <tr>
                            <td>Osobní číslo:</td>
                            <td><%# Eval ("OsCislo") %></td>
                        </tr>
                        <tr>
                            <td>Řešitel:</td>
                            <td><%# Eval("Resitel") %> </td>
                        </tr>
                        <tr>
                            <td>Založení záznamu:</td>
                            <td><%# Eval("DatumZalozeni") %></td>
                        </tr>
                        <tr>
                            <td>DIČ (VAT ID):</td>
                            <td><%# Eval("Dic") %></td>
                        </tr>
                        <tr>
                            <td>Poznámka:</td>
                            <td><%# Eval("Poznamka") %></td>
                        </tr>
                        <tr>
                            <td>Šetřené zdaňovací období:</td>
                            <td>

                            <%# Eval("Obdobi") %>




                            </td>
                        </tr>
                    </table>
                </div>
            </div>
        </ItemTemplate>
    </asp:Repeater>

nějaká další rada?

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

Ten druhej SqlDataSource s tím hiddenfieldem musíš mít až v tom ItemTemplate a ten HiddenField, jak jsem psal výše, musí být Bind, protože Eval je jen jednosměrný

Editováno 18.3.2015 11:14
Nahoru Odpovědět 18.3.2015 11:13
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Nahoru Odpovědět 19.3.2015 18:28
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 9 zpráv z 9.