更新GridView中的标签
本文关键字:标签 GridView 更新 | 更新日期: 2023-09-27 18:07:18
我已经开发了一个墙(嵌套评论),人们可以在那里评论草稿(帖子)。它包括一个拇指向上/向下的功能,问题是,当我点击拇指向上整个页面重新加载。我想要的只是标签,这是显示投票(喜欢)的数量要更新,没有别的。我该怎么做呢?这是我的尝试,但没有成功。ASPX:
<asp:ImageButton ID="lnklike" runat="server" ImageUrl="~/Images/thumbsup.png" height="20px" Width="20px" CommandName="like" CommandArgument='<%# Eval("ScrapId")%>'/>
<asp:UpdatePanel ID="UpdatePanel1" runat="Server">
<Triggers>
<asp:AsyncPostBackTrigger controlid="lnklike" eventname="click" />
</Triggers>
<ContentTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Controls_GetUserScraps.abc((int)Eval("ScrapId")) %>' />
protected void GridViewRowCommand(Object sender, GridViewCommandEventArgs e)
{
var scrapId = Int32.Parse(e.CommandArgument.ToString());
switch (e.CommandName)
{
case "like":
string chklike = "select likestatus from tbl_like where fromid='" + Session["UserId"] + "' and scrapid='" + scrapId + "'";
int a = dbo.GetLikesMethod(chklike);
string chkthumbsdown = "select thumbsdownstatus from tbl_like where fromid='" + Session["UserId"] + "' and scrapid='" + scrapId + "'";
int b = dbo.GetLikesMethod(chkthumbsdown);
if (a == 0 && b == 0)
{
string sendlike = "insert into tbl_like (ScrapId,FromId,LikeStatus) values('" + scrapId + "','" + Session["UserId"] + "',1)";
dbo.insert(sendlike);
//abc(scrapId);
GetUserScraps(int.Parse(Request.QueryString["Id"].ToString()));
}
else if (a != 0)
{
Response.Write("already liked");
}
else if (b != 0)
{
Response.Write("you can not like something you already downvoted!");
}
break;
}
}
获得点赞/点赞数的方法:
public static int abc(int scrpid)
{
string getlikes = "select COUNT(*) from tbl_like inner join Scrap on tbl_like.scrapid=Scrap.Id where tbl_like.likestatus=1 and tbl_like.scrapid='" + scrpid + "'";
dboperation dbo = new dboperation();
int a = dbo.GetLikesMethod(getlikes);
return a;
}
public void GetUserScraps(int Id)
{
string getUserScraps = "SELECT u.Id as UserId,u.firstname,u.ImageName,s.FromId,s.ToId,s.Message,s.SendDate,s.ID as ScrapId FROM [tbl_user] as u, Scrap as s WHERE u.Id=s.FromId AND s.ToId='" + Request.QueryString["Id"].ToString() + "'";
//string getlikes = "select COUNT(*) from tbl_like inner join Scrap on tbl_like.scrapid=Scrap.Id where tbl_like.likestatus=1 and tbl_like.scrapid='"+<%#DataBinder.Eval(Container.DataItem,"ScrapId")%>+"'";
// <%#DataBinder.Eval(Container.DataItem,"ScrapId")%>
dt = dbClass.ConnectDataBaseReturnDT(getUserScraps);
if (dt.Rows.Count > 0)
{
GridViewUserScraps.DataSource = dt;
GridViewUserScraps.DataBind();
}
}
在网格中,我将添加如下链接:
<asp:TemplateField ItemStyle-Wrap="false" ItemStyle-Width="35px">
<ItemTemplate>
<a href="javascript:void(0);" onclick="Link to your javascript method/ajax method">
</a>
</ItemTemplate>
<ItemStyle Wrap="False"></ItemStyle>
</asp:TemplateField>
然后使用像这样的jquery ajax调用
返回JSON格式的新计数并更新标签
Ajax Call
function UpdateLikeStatus(imageID, labelid)
{
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'Services/MiscService.asmx/UpdateLikeStatus',
data: "{'imageid':'" + imageID + "'}",
dataType: "json",
success: function (data) {
//This is the label you want to update with the new count.
$('#labelid').html(data.d);
}
});
}
这将是您的Webservice调用,也可以在WCF服务中使用。要查看如何实现AJAX web服务,请查看这里
[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string UpdateLikeStatus(string imageid)
{
string returnedData = "";
//Make call to stored procedure that does the update
returnedData = Storedprocedurecall.UpdateLikeStatus(imageid); //Updates the status and returns a count
//Now return the new count.
return returnedData;
}
在点击事件的图像或任何你正在使用更新类似的状态。
<img src="" id="genericimage" border="0" onclick="UpdateLikeStatus('<%#Eval("imageid") %>', this);" />
imageid =要更新类似状态的图像的id
如果你还是不明白就告诉我。