本文介绍了部分渲染无法在GridView中使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开发了一个简单的墙(嵌套评论),人们可以在其中评论剪贴簿(帖子)。它包括一个拇指向上/向下功能,问题是当我点击竖起大拇指时整个页面重新加载。我只想要显示投票数(喜欢)的标签进行更新,而不是其他任何内容。我怎样才能做到这一点?这是我的尝试无效..

ASPX:

I have developed a simple wall (nested comments) where people can comment on scraps(posts). It includes a thumbs up/down feature, the problem is that when i click on thumbs up the entire page reloads. I want just the label which is displaying number of votes(likes) to be updated and nothing else. How can i do this? This is my attempt which is not working..
ASPX:

<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")) %>' />





代码背后:



Code Behind:

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;



获得赞/赞的数量的方法:


Method to get number of thumbs up /likes:

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;
    }





加载墙的方法:



Method to Load Wall:

<pre lang="xml">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();


       }

   }

推荐答案


这篇关于部分渲染无法在GridView中使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 08:22