2012-01-28 56 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