Vlastní příspěvky a komentáře   zodpovězená otázka

ASP.NET WebForms, Databáze

Dobrý den, ve svém projektu potřebuji na stránku jednoduché příspěvky a komentáře k nim jako např. na Facebooku.

Příspěvky jsem udělal jednoduše přes tabulku v databázi, SqlDataSource a DataList. Horší to je s komentáři.

Do ItemTemplate DataListu jsem hodil další DataList, určený pro komentáře ke každému příspěvku. Kdyby byl na stránce pouze jeden přispěvek, dokázal bych udělat komentář. V tabulce s komentáři bych měl vazbu na ID příspěvku. Ale nedokážu to vymyslet, když je jich na stránce více, tak aby byl komentář přímo pod příspěvkem, ke kterému patří.

Můžete mi prosím poradit, jak vyřešit tento problém? Případně existuje již nějaké hotové řešení, které bych mohl použít a graficky si ho přizpůsobit?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro komentáře vytvořte samostatnou tabulku a u každého komentáře si uložte do jednoho ze sloupců ID příspěvku,ke kterému komentář patří. Poté stačí např.pomocí Repeater komponenty ( i když vlastní komponenta od něj odvozená by byla vhodnější),jen vylistovat daný příspěvek a všechny komentáře s ním spjaté.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za odpověď, takhle mě to taky napadlo.

Spojil jsem tabulku Posts a Comments příkazem JOIN a komentář se opravdu zobrazí jenom pod příspěvkem, pod kterým má.

Akorát mám 2 problémy. Na stránce se zobrazí pouze ty příspěvky, které mají nějaký komentář. Ty bez komentáře se nezobrazí.

Potom nevím, jak vložit do tabulky s komentáři ID příspěvku, ke kterému komentář napíšu.

Ještě přidám kód:

 <div id="GroupPosts">
        <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:MotWebConnectionString %>" 
        SelectCommand="SELECT * FROM [Posts] 
                        JOIN [Users] ON [Users].[UserName] = [Posts].[UserName] 
                        LEFT OUTER JOIN [Comments] ON [Comments].[PostId] = [Posts].[PostId]
                        WHERE ([GroupId] = @GroupId) ">
            <SelectParameters>
                <asp:QueryStringParameter Name="GroupId" QueryStringField="id" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>


<asp:Repeater ID="DataList2" runat="server" DataSourceID="SqlDataSource3" >
            <ItemTemplate>
                <table style="width: 100%;">
                    <tr>
                        <td width="10%">    
                            <asp:Image ID="Image2" runat="server" Width="64px" Height="64px" ImageUrl='<%# Eval("ProfilePicture")%>' />
                        </td>
                        <td align="left" width="90%" >
                            <p><asp:Literal ID="Literal2" runat="server" Text='<%# Eval("Username")%>'></asp:Literal></p>
                        </td>
                    </tr>                    
                </table>
                <asp:Literal ID="Literal3" runat="server" Text='<%# Eval("Text")%>'></asp:Literal>

                <table>
                    <tr>
                        <td>
                            <asp:Literal ID="Literal4" runat="server" Text='<%# Eval("CommentText")%>'></asp:Literal>
                        </td>
                    </tr>
                </table>
</ItemTemplate>
</asp:Repeater

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Použil jsem LEFT OUTER JOIN a už se zobrazují i příspěvky bez komentáře. Ale pořád nevím, jak komentář vložit se správným ID příspěvku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback