用AJAX刷新新内容

问题描述:

在这个例子中,我想当按下ID为“PostCommentsButton”的按钮时,这个ContentTemplate被触发,并在ID为“CommentListView”的ListView中再次迭代。但这在这里不起作用。我想念什么?用AJAX刷新新内容

在这个例子中,我从textfield和后面的代码中获取新的文本,我把这个新的内容从textfield与ado.net放在一起,我将这个新内容保存在数据库中。问题是,当按下UpdatePanel中的按钮时,新信息不会与其他内容一起出现在列表中。只有当我重新启动页面时才会出现。我希望UpdatePanel中的ListView能够在按下按钮时再次迭代,从AJAX文本框中获取这个新内容。我该怎么办 ?

ASPX代码:

   <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
        <Triggers> 
         <asp:AsyncPostBackTrigger ControlID="PostCommentsButton" /> 
        </Triggers> 
        <ContentTemplate> 
         <asp:ListView ID="CommentListView" runat="server" DataSource= '<%# Eval("Comments") %>'> 
          <ItemTemplate> 
           <div class="postComments"> 
            <span class="authorComment"><%# Eval("Author") %></span> 
            : 
            <span class="commentContent"><%# Eval("Message") %></span> 
           </div> 
          </ItemTemplate> 
         </asp:ListView> 
        </ContentTemplate> 
       </asp:UpdatePanel> 

后面的代码:

protected void PostsListView_ItemCommand(object sender, ListViewCommandEventArgs e) 
    { 

     //commandName is for recognize the clicked button 
     if (e.CommandName == "postComment") 
     { 
      //get the comment from textbox from current listview iteration 
      BlogProfileEntities blogProfile = new BlogProfileEntities(); 
      var commentBox = e.Item.FindControl("AddCommentTextbox") as TextBox; 
      var hiddenFieldPostID = e.Item.FindControl("CurrentPostIDHiddenField") as HiddenField; 
      string text = commentBox.Text; 
      var postID = hiddenFieldPostID.Value; 
      Comment newComment = new Comment() 
      { 
       Message = text, 
       PostID = int.Parse(postID), 
       Author = Membership.GetUser().UserName 
      }; 

      blogProfile.Comments.Add(newComment); 
      blogProfile.SaveChanges(); 
+0

代码隐藏在代码背后的代码后面... – 2013-02-26 17:12:12

我没有看到一个文本框,在你的榜样。如果文本框不在更新面板中,当列表视图回发时被调用,我不认为你会得到当前值。我会怀疑,如果你在你的commentBox变量上放置一个断点,你会看到它返回为Nothing。如果这不是完整的代码,请发布一切。