Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在GridView中喜欢/不喜欢投票_C#_Asp.net_Sql - Fatal编程技术网

C# 在GridView中喜欢/不喜欢投票

C# 在GridView中喜欢/不喜欢投票,c#,asp.net,sql,C#,Asp.net,Sql,我正在创建一个大学网站,这个网站有点像社交网站,人们可以在彼此的墙上贴垃圾。我想在每个废品上加入“喜欢/不喜欢”或“赞成/反对”。我创建了一个名为 我喜欢 时间 报废表: ScrapId | FromId | toId | msg | sendDate 我下一步做什么 <asp:GridView ID="GridViewUserScraps" ItemStyle-VerticalAlign="Top" AutoGenerateColumns="False"

我正在创建一个大学网站,这个网站有点像社交网站,人们可以在彼此的墙上贴垃圾。我想在每个废品上加入“喜欢/不喜欢”或“赞成/反对”。我创建了一个名为 我喜欢

时间

报废表: ScrapId | FromId | toId | msg | sendDate

我下一步做什么

<asp:GridView ID="GridViewUserScraps" ItemStyle-VerticalAlign="Top" AutoGenerateColumns="False"
                GridLines="None" Width="100%" ShowHeader="False" runat="server" AlternatingRowStyle-BackColor="#A5A5A5"
                CellPadding="4" ForeColor="#333333">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <table align="left" cellpadding="1" cellspacing="2">
                                <tr>
                                    <td>
                                        <a href='<%#getUserHREF(Container.DataItem)%>'>
                                            <img align="middle" src='<%#getSRC(Container.DataItem)%>' border="0" width="50px" /></a>
                                    </td>
                                    <td>
                                        &nbsp;</td>
                                </tr>
                            </table>
                            <div align="justify">
                                <%#DataBinder.Eval(Container.DataItem, "Message")%>
                                <br />
                                <br />
                            </div>
                            <span class="SmallBlackText">Posted On: &nbsp;</span>
                            <asp:Label ID="lblSendDate" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"SendDate")%>'></asp:Label>
                            </span>
                            <br />
                            <asp:LinkButton ID="lnklike" runat="server">Like</asp:LinkButton>
                            &nbsp;&nbsp;&nbsp;
                            <asp:LinkButton ID="lnkunlike" runat="server">unlike</asp:LinkButton>
                            &nbsp;&nbsp;
                            <asp:Label ID="lbllike" runat="server" Text="likes:"></asp:Label>
                            <asp:Label ID="lbllikecount" runat="server" Text="0"></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <RowStyle BackColor="#EFF3FB" />
                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <EditRowStyle BackColor="#2461BF" />
                <AlternatingRowStyle BackColor="White" />
            </asp:GridView>

GridView
使用
OnItemCommand
事件

在html中:

<asp:GridView .... OnItemCommand="CommandLinkClicked">

    <asp:LinkButton ID="lnklike" runat="server" CommandName="like" CommandArgument='<%# Eval("ScrapId")%>'>Like</asp:LinkButton>
    <asp:LinkButton ID="lnkunlike" runat="server"  CommandName="unlike" CommandArgument='<%# Eval("ScrapId")%>'>unlike</asp:LinkButton>

</asp:GridView>
CommandArguemnt
应该是应该更新为相似/不相似状态的项的id


我清理了您的SQL,现在它还返回每个片段的注释计数:

string getUserScraps = "SELECT u.Id as UserId,u.firstname,u.ImageName,s.FromId,s.ToId,s.Message,s.SendDate,s.ID as ScrapId, ISNULL(COUNT(l.scrapid), 0) as CommentCount FROM Scrap as s INNER JOIN [User] as u on u.Id = s.FromId LEFT  JOIN tbl_like as l on l.scrapid = s.Id and l.likestatus = 1 WHERE s.ToId = '" + Request.QueryString["Id"].ToString() + "' GROUP BY u.Id,u.firstname,u.ImageName,s.FromId,s.ToId,s.Message,s.SendDate,s.ID";
在这里,您有了更具可读性的版本(与上面相同!)


它计算每个废料的注释,如果没有注释,则返回0。将您的
GridView
列绑定到CommentCount,它应该可以正常工作

GridView
使用
OnItemCommand
事件

在html中:

<asp:GridView .... OnItemCommand="CommandLinkClicked">

    <asp:LinkButton ID="lnklike" runat="server" CommandName="like" CommandArgument='<%# Eval("ScrapId")%>'>Like</asp:LinkButton>
    <asp:LinkButton ID="lnkunlike" runat="server"  CommandName="unlike" CommandArgument='<%# Eval("ScrapId")%>'>unlike</asp:LinkButton>

</asp:GridView>
CommandArguemnt
应该是应该更新为相似/不相似状态的项的id


我清理了您的SQL,现在它还返回每个片段的注释计数:

string getUserScraps = "SELECT u.Id as UserId,u.firstname,u.ImageName,s.FromId,s.ToId,s.Message,s.SendDate,s.ID as ScrapId, ISNULL(COUNT(l.scrapid), 0) as CommentCount FROM Scrap as s INNER JOIN [User] as u on u.Id = s.FromId LEFT  JOIN tbl_like as l on l.scrapid = s.Id and l.likestatus = 1 WHERE s.ToId = '" + Request.QueryString["Id"].ToString() + "' GROUP BY u.Id,u.firstname,u.ImageName,s.FromId,s.ToId,s.Message,s.SendDate,s.ID";
在这里,您有了更具可读性的版本(与上面相同!)


它计算每个废料的注释,如果没有注释,则返回0。将您的
GridView
列绑定到CommentCount,它应该可以正常工作

如何显示每个废品的赞数?从tbl_like.scrapid=scrape.Id中选择COUNT(*),其中tbl_like.likestatus=1和tbl_like.scrapid=?“我创建的网站没有像fb这样的评论,它只有像orkut这样的单个片段。问题是我不知道如何显示喜欢的数量。因为在select COUNT(*)中从tbl_like.scrapid=Scrap.Id上的tbl_like.likestatus=1和tbl_like.scrapid=23的tbl_like内部连接废料(如果使用此选项,它将仅返回scrapid=23的喜欢数)并且每一行都有相同的答案。感谢您的努力。Btwy您可以对第一次查询返回的每一行进行迭代,并对其运行第二次查询,但我的结果要好得多(调用更少,所有内容都在第一个sp中返回),所以请尝试使用我的建议-它应该完美地工作:)我如何显示每个废品的喜欢数?从tbl_like.scrapid=scrape.Id上的tbl_like.likestatus=1和tbl_like.scrapid=?“我创建的网站没有类似fb的评论,它只有像orkut这样的单个碎片。问题是我不知道如何显示喜欢的数量。因为在从tbl_like.scrapid=scrape.Id上的tbl_like.likestatus=1和tbl_like.scrapid=23的tbl_like内部连接废料中选择计数(*),如果我使用它,它将只返回scrapid=23的喜欢数,并且每一行都有相同的答案。感谢您的努力Btwy您可以对第一次查询返回的每一行进行迭代,并对其运行第二次查询,但我的结果要好得多(调用更少,所有内容都在第一个sp中返回),因此请尝试使用我的建议-它应该能够完美地工作:)
SELECT u.Id as UserId,u.firstname,u.ImageName,s.FromId,s.ToId,s.Message,s.SendDate,s.ID as ScrapId, ISNULL(COUNT(l.scrapid), 0) as CommentCount
FROM Scrap as s
INNER JOIN [User] as u on u.Id = s.FromId
LEFT  JOIN tbl_like as l on l.scrapid = s.Id and l.likestatus = 1
WHERE s.ToId = 23 --here goes id!
GROUP BY u.Id,u.firstname,u.ImageName,s.FromId,s.ToId,s.Message,s.SendDate,s.ID