2012-01-28 23 views
2

我正在制作一个社交网站,我在这里面临的问题是我使用了中继器内的更新面板,并且我想刷新updatepanel的内容当用户点击任何链接按钮,当然这个updatepanel会重复foreach(div-post),但是当我点击中继控件和updatepanel内的任何链接按钮时,它不会刷新。我如何强制它刷新?下面是我使用的代码...如何使用更新面板刷新Repeater控件中的单个项目

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
        </asp:ScriptManager> 
          <asp:Repeater ID="Repeater1" runat="server" 
           OnItemCommand="MyButtonCommandEvent"> 
           <ItemTemplate> 
           <asp:UpdatePanel ID="UpdatePanel3" runat="server"> 
         <ContentTemplate> 
            <div class="post"> 
             <asp:HiddenField ID="postID_hidden" runat="server" 
              Value='<%# Eval("posts_ID") %>' /> 
             <div class="Thumb"> 
              <img src="thumbs/abdo_thumb.jpg"> </img></div> 
             <span class="user"><%#Eval("poster_name")%> 
             </span> 
             <div class="post-body"> 
              <p> 
               <%#Eval("description")%> 
              </p> 
             </div> 
             <div class="post-options" style=" height:22px; "> 
              <span class="first"><%#Eval("post_date")%></span> 
              <ul style="display:inline; list-style-type: none;"> 
               <li> 
                <div class="tooltip"> 
                 Comments 
                 <img class="tool-img" src="Images/comments.png"> : <%#Eval("comment_num") %> 
                 </img> 
                </div> 
               </li> 
               <li> 
                <div class="tooltip"> 
                 <asp:LinkButton ID="like_linkbtn" runat="server" CommandName="Like" OnClick="Like_Click"><%#(Eval("name_like").ToString() == "") ? "Like" : Eval("name_like")%></asp:LinkButton> 
                 <img class="tool-img" src="images/likes.png"> : <%#Eval("like_counter") %> 
                 </img></div> 
               </li> 
               <li> 
                <div class="tooltip"> 
                 <asp:LinkButton ID="hate_linkbtn" runat="server" CommandName="Hate"><%#(Eval("name_hate").ToString() == "") ? "Hate" : Eval("name_hate")%></asp:LinkButton> 
                 <img class="tool-img" src="images/hate.png"> : <%#Eval("hate_counter") %> 
                 </img></div> 
               </li> 
              </ul> 
             </div> 
             <div class="finish"> 
             </div> 
            </div> 
            </ContentTemplate> 
        </asp:UpdatePanel> 
           </ItemTemplate> 
          </asp:Repeater> 

而服务器端代码

protected void Like_Click(object sender, EventArgs e) 
    { 
     LinkButton1.Text = DateTime.Now.ToString(); 
    } 
    protected void MyButtonCommandEvent(object source, RepeaterCommandEventArgs e) 
    { 
     var postID = e.Item.FindControl("postID_hidden") as HiddenField; 
     NewUser user = new NewUser(); 
     if (e.CommandName == "Like") 
     { 
      user.like_post(int.Parse(postID.Value), (int)Session["accountID"]); 
     } 
     else 
     { 
      if (e.CommandName == "Hate") 
      { 
       user.hate_post(int.Parse(postID.Value), (int)Session["accountID"]); 
      } 
     } 

     // repeater_databind();//This will refresh all the contents of the repeater(bad way) 
    } 

所以当看到数据绑定工作不适合我,因为我想刷新只有一个项目中继器控制,而不是整个项目,任何人都可以帮助我吗?

编辑: 问题在其他的UpdatePanel包裹整个中继器和设置触发这样

<asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
        <ContentTemplate> 
        <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="Repeater1" EventName="MyButtonCommandEvent" /> 
</Triggers> 

回答

0

解决你应该尝试的UpdateMode属性格式的更新面板设置为Conditional

+0

好我刚刚做了,但它仍然没有刷新 – 2012-01-28 23:32:21