Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
I have a imagebutton in a grid and when i click on it i want the label next to it to get updated. The problem is right now when i do this entire page gets reloaded which is annoying. I want to make it like facebook where when you like a comment the entire page does not reload only a small fraction is reloaded.
 
<asp:ImageButton ID="lnklike" runat="server" ImageUrl="~/Images/thumbsup.png" height="20px" Width="20px" CommandName="like" CommandArgument='<%# Eval("ScrapId")%>'/> &nbsp;
<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());
        GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
        int index = gvr.RowIndex;
 
        switch (e.CommandName)
        {
            case "like":
                //GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
                //int index = gvr.RowIndex;

                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);
                   int likes= abc(scrapId);
                    //GetUserScraps(int.Parse(Request.QueryString["Id"].ToString()));
                    Label lnklike = (Label)GridViewUserScraps.Rows[index].FindControl("Label1");
                        lnklike.Text= likes.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 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();
 
       }
Posted 4-Apr-13 4:00am
Edited 4-Apr-13 4:17am
v4

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Put the label in UpdatePanel and update the panel whenever you need.
Try this:
HTML:
<asp:updatepanel id="UpdatePanel1" runat="Server" xmlns:asp="#unknown">
    <contenttemplate>  
          <asp:label id="Label1" runat="server" text="<%# Controls_GetUserScraps.abc((int)Eval("ScrapId")) %>" />
    </contenttemplate>
</asp:updatepanel>
CS:
Label lnklike = (Label)GridViewUserScraps.Rows[index].FindControl("Label1");
lnklike.Text= likes.ToString();
UpdatePanel UpdatePanel1= (UpdatePanel)GridViewUserScraps.Rows[index].FindControl("UpdatePanel1");
UpdatePanel1.Update();
 

--Amit
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 195
1 ProgramFOX 130
2 Maciej Los 105
3 Sergey Alexandrovich Kryukov 85
4 Afzaal Ahmad Zeeshan 82
0 OriginalGriff 6,564
1 Sergey Alexandrovich Kryukov 6,048
2 DamithSL 5,228
3 Manas Bhardwaj 4,717
4 Maciej Los 4,150


Advertise | Privacy | Mobile
Web02 | 2.8.1411022.1 | Last Updated 5 Apr 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100