none
Vlastní příspěvky a komentáře

    Dotaz

  • 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?

    Jiří Zdvomka


    13. února 2013 11:19

Odpovědi

  • Tak už jsem na něco přišel. 


    Udělal jsem si tabulku Comments se sloupcem ID příspěvku. 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.

    Přidám kód:

     <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:MotWebConnectionString %>" 
            SelectCommand="SELECT * FROM [Posts] 
                            JOIN [Users] ON [Users].[UserName] = [Posts].[UserName] 
                            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>


    Jiří Zdvomka

    14. února 2013 11:53