ile yenilemek Tüm sayfayı yeniden yüklemeden yorum gönderebileceğiniz bir sayfayı kodlarım. Yorumlar Tekrarlayıcı kontrolü kullanılarak görüntülenir. Şablon şuna benzer:Bir UpdatePanel'de bir Repeater denetimini ASP.NET
<asp:UpdatePanel runat="server" ID="commentsUpdatePanel" UpdateMode="Conditional">
<ContentTemplate>
<!-- Comments block -->
<div class="wrapper bloc content">
<h3><img src="img/comments.png" alt="Comments" /> 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> 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() işlevi sadece çalışıyor - "Gönder" yazısı yapacak tıklayarak. Bununla birlikte, yeni yorumları görmek için sayfayı tamamen yeniden yüklemem gerekiyor - bu kullanıcının yapacağı yayın o zamana kadar gösterilmeyecek. Bir (! IsPostBack) kontrolünden sonra Page_Load() içinde tekrarlayıcıyı veriyorum.
postCommentButton_Click() fonksiyonu aşağıdaki gibidir: Benim durumumda
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
}
}
, biz, yine, bir daha yazı olmalıdır repeaterin değil içeriği postCommentFeedback.Text yenilenir görüyorum ama yok.
Bu eksik mi?
benim Tekrarlayıcı DataSource bir MySqlDataReader çünkü bu kadar eminim ve kullanıcının mesajını verdikten sonra güncellemem. Güncellenmedi, çünkü veri tabanını sadece (! IsPostBack) ... Bunu yapmanın doğru yolu ne olurdu? Her Page_Load() üzerinde DataBind gerekir, ancak bir yorum gönderildikten sonra DataBind'e ihtiyacım var. – Astaar