C# 在GridView中喜欢/不喜欢投票
我正在创建一个大学网站,这个网站有点像社交网站,人们可以在彼此的墙上贴垃圾。我想在每个废品上加入“喜欢/不喜欢”或“赞成/反对”。我创建了一个名为 我喜欢 时间 报废表: ScrapId | FromId | toId | msg | sendDate 我下一步做什么C# 在GridView中喜欢/不喜欢投票,c#,asp.net,sql,C#,Asp.net,Sql,我正在创建一个大学网站,这个网站有点像社交网站,人们可以在彼此的墙上贴垃圾。我想在每个废品上加入“喜欢/不喜欢”或“赞成/反对”。我创建了一个名为 我喜欢 时间 报废表: ScrapId | FromId | toId | msg | sendDate 我下一步做什么 <asp:GridView ID="GridViewUserScraps" ItemStyle-VerticalAlign="Top" AutoGenerateColumns="False"
<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>
</td>
</tr>
</table>
<div align="justify">
<%#DataBinder.Eval(Container.DataItem, "Message")%>
<br />
<br />
</div>
<span class="SmallBlackText">Posted On: </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>
<asp:LinkButton ID="lnkunlike" runat="server">unlike</asp:LinkButton>
<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