के साथ एक अपडेटपेनल में एक पुनरावर्तक नियंत्रण को रीफ्रेश करना मैं एक पृष्ठ को कोड करने का प्रयास कर रहा हूं जहां आप पूरे पृष्ठ को पुनः लोड किए बिना कोई टिप्पणी पोस्ट कर सकते हैं। टिप्पणियां एक पुनरावर्तक नियंत्रण का उपयोग कर प्रदर्शित की जाती हैं। टेम्पलेट इस तरह दिखता है: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() फ़ंक्शन बस ठीक काम करता है - "भेजें" पोस्ट कर देगा क्लिक करें। हालांकि, मुझे नई टिप्पणियां देखने के लिए पृष्ठ को पूरी तरह से पुनः लोड करने की आवश्यकता है - तब तक जो उपयोगकर्ता बनाया गया है, वह तब तक नहीं दिखाएगा। मैं पृष्ठ (लोड करें)() isPostBack) चेक के बाद पेज_लोड() में पुनरावर्तक डेटाबेस।
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 ताज़ा किया, लेकिन, फिर से, पुनरावर्तक जो एक और पोस्ट करना चाहिए था की नहीं सामग्री।
मुझे क्या याद आ रही है?
मैं यकीन है कि क्योंकि मेरी पुनरावर्तक के डेटास्रोत एक MySqlDataReader है कि यह कर रहा हूँ , और उपयोगकर्ता ने अपनी पोस्ट करने के बाद इसे अपडेट नहीं किया है। यह अपडेट नहीं किया गया है क्योंकि मैं केवल डाटाबेस करता हूं (! IsPostBack) ... तब ऐसा करने का सही तरीका क्या होगा? मुझे प्रत्येक पृष्ठ_लोड() पर डेटा बाइंड करना चाहिए, फिर भी मुझे टिप्पणी के बाद डेटाबेंड की आवश्यकता है। – Astaar