سلام استاد ،روزبخیر
من یک آپدیت پنل دارم که داخلش دوتا ریپیتر دارم، من با استفاده از تایمر چند ثانیه یک بار ریپیتر اول رو bind میکنم، اما متاسفانه ریپیتر دومم هم bind میشه
لطفا کمکم کنیدو بگید مشکلش کجاست
اینم کد هامه
ممنون میشم کمکم کنید
<asp:UpdatePanel runat="server" ID="UpdatepanelConversation" UpdateMode="Conditional"> <ContentTemplate> <asp:HiddenField ID="HiddenFieldConversationId" runat="server" EnableViewState="true" Value="" /> <asp:Repeater ID="RepeaterConversation" runat="server" OnItemCommand="RepeaterConversation_ItemCommand" OnItemDataBound="RepeaterConversation_ItemDataBound"> <HeaderTemplate> <div class="conversation-wrap col-lg-3 col-md-3 col-sm-4 col-xs-12" id="conversation"> <asp:Label ID="lanel1" runat="server"></asp:Label> </HeaderTemplate> <ItemTemplate> <div class="media conversation"> <a class="pull-right"> <asp:Image ID="Image1" runat="server" ImageUrl='<%#DataBinder.Eval(Container.DataItem, "Avatar")%>' CssClass="media-object" Style="width: 50px; height: 50px;" /> </a> <div class="media-body" style="padding-top: 10px;"> <asp:LinkButton ID="LinkButtonConversation" runat="server" CommandName="SelectConversation" CommandArgument='<%# Eval("ConversationId")%>'><%# Eval("PersonalSenderNameFamily")%></asp:LinkButton> <span id="SpanCon" class="badge progress-bar-success"><%#DataBinder.Eval(Container.DataItem, "countHasbeenSeen")%></span> <asp:PlaceHolder ID="CountHasBeenPlaceholder" runat="server" /> </div> </div> </ItemTemplate> <FooterTemplate> </div> </FooterTemplate> </asp:Repeater> <asp:Repeater ID="RepeaterMessage" runat="server"> <HeaderTemplate> <div class="message-wrap col-lg-9 col-md-9 col-sm-8 col-xs-12"> </HeaderTemplate> <ItemTemplate> <br /> <div class="msg-wrap text-right"> <div class="media msg "> <a class="pull-right"> <asp:Image ID="Image1" runat="server" ImageUrl='<%#DataBinder.Eval(Container.DataItem, "PersonalAvatar")%>' CssClass="media-object" Style="width: 32px; height: 32px; float: right" /> </a> <div class="media-body"> <small class="pull-left time"><i class="fa fa-clock-o"></i><%# Eval("DateTime")%></small> <h5 class="media-heading" style="padding-top: 10px"><%#Eval("PersonalNameFamily")%></h5> <small class="col-lg-10" dir="rtl"> <%#DataBinder.Eval(Container.DataItem, "Content")%> </small> </div> </div> </div> </ItemTemplate> <FooterTemplate> <span id="saa"></span> </div> </FooterTemplate> </asp:Repeater> <div class="send-wrap media-left col-lg-9 col-md-9 col-sm-8 col-xs-12 " style="margin-top: 30px; float: left"> <asp:TextBox runat="server" Visible="false" TextMode="MultiLine" ID="TextMessage" name="ContentMessage" class="form-control send-message" Rows="3" placeholder="پیام خود را بنویسید..." dir="rtl"> </asp:TextBox> <br /> <span id="statuschangepass" style="color: red"></span> <br /> <asp:Button ID="btnsendmessage" Visible="false" CommandName="CommandSendMessage" CommandArgument='<%# Eval("ConversationId")%>' runat="server" Text="ارسال پیام " CssClass=" text-right btn send-message-btn<%-- pull-right--%>" BackColor="#4CB8CA" ForeColor="White" Font-Size="Medium" Font-Bold="true" OnClick="btnsendmessage_Click" OnClientClick="return validSendMessage()" /> </div> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="TimerLoadConversation" EventName="Tick" /> <asp:AsyncPostBackTrigger ControlID="btnsendmessage" EventName="Click" /> </Triggers> </asp:UpdatePanel>
اینم کد های code behind
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string CurrentUserId = currentuser.ReturnCurrentUserId(); bindrepeaterconversation(CurrentUserId); // نام و نام خانوادگی در بالای صفحه ShahrezaTicket.Class.CurrentUser InstanceCurrentUser = new Class.CurrentUser(); NameFamiliUserOnTop.Text = " سلام آقای " + InstanceCurrentUser.ReturnNameFamilyUser(InstanceCurrentUser.ReturnCurrentUserId()); } } public void bindrepeaterconversation(string curentuserid) { using (var context = new ShahrezaTicketDbContext()) { IList<GetConversation> conversationlist = (from conversation in context.Conversations from user in context.Users where conversation.UserTwoId == user.Id || conversation.UserOneId == user.Id where user.Id == curentuserid orderby conversation.DateTime descending select new GetConversation { PersonalSenderNameFamily = user.NameFamily, ConversationId = conversation.Id, UserTwoID = conversation.UserOneId, UserOneID = conversation.UserTwoId, DateTime = conversation.DateTime, Avatar = user.Avatar, }).ToList(); // System.Web.UI.HtmlControls.HtmlGenericControl createLabel = //new System.Web.UI.HtmlControls.HtmlGenericControl("LABEL"); IList<GetConversation> editlist = new List<GetConversation>(); foreach (var item in conversationlist) { if (item.UserTwoID == curentuserid) // Sender ID { GetConversation temp = new GetConversation(); temp.ConversationId = item.ConversationId; temp.PersonalSenderNameFamily = currentuser.ReturnNameFamilyUser(item.UserOneID); temp.UserOneID = item.UserOneID; temp.UserTwoID = item.UserTwoID; temp.DateTime = item.DateTime; temp.countHasbeenSeen = CountNotReadMessage(Convert.ToInt32(temp.ConversationId)); temp.Avatar = currentuser.ReturnAvatarUser(item.UserOneID); editlist.Add(temp); } else if (item.UserOneID == curentuserid) { GetConversation temp = new GetConversation(); temp.ConversationId = item.ConversationId; temp.PersonalSenderNameFamily = currentuser.ReturnNameFamilyUser(item.UserTwoID); temp.UserOneID = item.UserOneID; temp.UserTwoID = item.UserTwoID; temp.DateTime = item.DateTime; temp.countHasbeenSeen = CountNotReadMessage(Convert.ToInt32(temp.ConversationId)); temp.Avatar = currentuser.ReturnAvatarUser(item.UserTwoID); editlist.Add(temp); } } RepeaterConversation.DataSource = editlist; RepeaterConversation.DataBind(); //ScriptManager.RegisterStartupScript(this, GetType(), "GoToEndList", "GoToEndList()", true); } } public void showmessageinboxfunction(long conversationId) { using (var context = new ShahrezaTicketDbContext()) { IList<ShowMessage> messagelist = (from message in context.Messages join user in context.Users on message.SenderUserId equals user.Id where message.ConversationId == conversationId orderby message.Id ascending select new ShowMessage { Content = message.ContentText, ConversationId = message.ConversationId, DateTime = message.DateTime, //DateTime = convertdatetime.ConvertDateTimeMiladiToShamsi(message.DateTime), MessageId = message.Id, PersonalAvatar = user.Avatar, PersonalId = message.SenderUserId, PersonalNameFamily = user.NameFamily, }).ToList(); RepeaterMessage.DataSource = messagelist; RepeaterMessage.DataBind(); } } protected void RepeaterConversation_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "SelectConversation") { conID = Convert.ToInt64(e.CommandArgument); changehasbeenseen(conID); HiddenFieldConversationId.Value = conID.ToString(); showmessageinboxfunction(conID); TextMessage.Visible = true; btnsendmessage.Visible = true; ScriptManager.RegisterStartupScript(this, GetType(), "GoToEndList", "GoToEndList()", true); } } protected void TimerLoadConversation_Tick(object sender, System.EventArgs e) { try { string CurrentUserId = currentuser.ReturnCurrentUserId(); bindrepeaterconversation(CurrentUserId); } catch (Exception) { ShowMessage("خطا Exception!!!", MessageType.Error); throw; } }
آیا Repeater ها به هم وابسته هستند ؟
به نظر اینطور میاد
خب این حالت طبیعیه که دومی هم بروزرسانی بشه
ممنون واسه این که به مشکلم رسیدگی کردین آقای مدائنی، واقعا لطف کردید
بله وابسته هستند ، میخوام با کلیک روی ریپیتر اول id اون گرفته بشه و تمام مشخصاتی که اون id رو دارن توی ریپیتر دوم نمایش داده بشه
میتونم این وابستگی رو نداشته باشم یا یکاری کنم که دومی بایند نشه ؟؟
بازم متشکرم از کمکتون
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)