gpt4 book ai didi

c# - 使用 ASP.NET 刷新 UpdatePanel 中的 Repeater 控件

转载 作者:太空狗 更新时间:2023-10-29 21:56:04 24 4
gpt4 key购买 nike

我正在尝试编写一个页面,您可以在其中发表评论而无需重新加载整个页面。使用 Repeater 控件显示评论。模板如下所示:

    <asp:UpdatePanel runat="server" ID="commentsUpdatePanel" UpdateMode="Conditional">
<ContentTemplate>
<!-- Comments block -->
<div class="wrapper bloc content">
<h3><img src="img/comments.png" alt="Comments" />&nbsp;Comments</h3>
<p><asp:Label ID="viewImageNoComments" runat="server" /></p>
<asp:Repeater ID="viewImageCommentsRepeater" runat="server">
<HeaderTemplate>
<div class="float_box marge wrapper comments">
</HeaderTemplate>
<ItemTemplate>
<div class="grid_25">
<span class="user"><%#Eval("username")%></span><br />
<span style="font-size:x-small; color:#666"><%#Eval("datetime") %></span>
</div>
<div class="grid_75">
<p align="justify"><%#Eval("com_text") %></p>
</div>
</ItemTemplate>
<FooterTemplate>
</div>
</FooterTemplate>
</asp:Repeater>
</div>
<!-- Post comment block -->
<div class="wrapper bloc content">
<h3><a id="post_comment" name="post_comment"><img src="img/comment_edit.png" alt="Comments" /></a>&nbsp;Post
a comment</h3>
<p class="description">Please be polite.</p>
<p>
<asp:Label ID="postCommentFeedback" runat="server" />
</p>
<table border="0">
<tr>
<td valign="top">
<asp:TextBox id="postCommentContent" runat="server" TextMode="MultiLine"
MaxLength="600" Columns="50" Rows="15" Width="400px" />
</td>
<td valign="top">
<span style="font-size:x-small">BBCode is enabled. Usage :<br />
<b>bold</b> : [b]bold[/b]<br />
<i>italic</i> : [i]italic[/i]<br />
<span class="style1">underline</span> : [u]underline[/u]<br />
Link : [url=http://...]Link name[/url]<br />
Quote : [quote=username]blah blah blah[/quote]</span>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="postCommentButton" runat="server" Text="Submit"
onclick="postCommentButton_Click" />
</td>
</tr>
</table>
</div>
</ContentTemplate>
</asp:UpdatePanel>

postCommentButton_Click() 函数工作正常 - 单击“提交”将发布帖子。但是,我需要完全重新加载页面才能看到新评论 - 用户刚刚发布的帖子直到那时才会显示。在 (!isPostBack) 检查后,我在 Page_Load() 中对 Repeater 进行了数据绑定(bind)。

postCommentButton_Click() 函数如下所示:

protected void postCommentButton_Click(object sender, EventArgs e)
{
// We check if user is authenticated
if (User.Identity.IsAuthenticated)
{
// Attempt to run query
if (Wb.Posts.DoPost(postCommentContent.Text, Request.QueryString["imageid"].ToString(), User.Identity.Name, Request.UserHostAddress))
{
postCommentFeedback.Text = "Your post was sucessful.";
postCommentContent.Text = "";

}
else
{
postCommentFeedback.Text = "There was a problem with your post.<br />";
}

}
// CAPTCHA handling if user is not authenticated
else
{
// CAPTCHA
}
}

在我的例子中,我们确实看到 postCommentFeedback.Text 刷新了,但是,再一次,没有看到转发器的内容,它应该有一个更多的帖子。

我缺少什么?

最佳答案

您应该像现在一样在 !IsPostBack 中的 Page_Load 中进行 DataBind。您还应该在 Click 事件中进行数据绑定(bind)。

    protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
this.DataBind();
}
}
protected void MyButton_Click(object sender, EventArgs e)
{
//Code to do stuff here...

//Re DataBind
this.DataBind();
}
public override void DataBind()
{
//Databinding logic here
}

关于c# - 使用 ASP.NET 刷新 UpdatePanel 中的 Repeater 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1124856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com