مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hasan_adelian

عضویت از 1394/08/13

مشکل استفاده از 2 ریپیتر در یک آپدیت پنل

  • جمعه 24 اردیبهشت 1395
  • 12:00
تشکر میکنم

سلام استاد ،روزبخیر

من یک آپدیت پنل دارم که داخلش دوتا ریپیتر دارم، من با استفاده از تایمر چند ثانیه یک بار ریپیتر اول رو 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;
            }

        }

 

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 24 اردیبهشت 1395
  • 15:28

آیا Repeater ها به هم وابسته هستند ؟

به نظر اینطور میاد

خب این حالت طبیعیه که دومی هم بروزرسانی بشه

کاربر سایت

hasan_adelian

عضویت از 1394/08/13

  • جمعه 24 اردیبهشت 1395
  • 16:03

ممنون واسه این که به مشکلم رسیدگی کردین آقای مدائنی، واقعا لطف کردید

بله وابسته هستند ، میخوام با کلیک روی ریپیتر اول id اون گرفته بشه و تمام مشخصاتی که اون id رو دارن توی ریپیتر دوم نمایش داده بشه

میتونم این وابستگی رو نداشته باشم یا یکاری کنم که دومی بایند نشه ؟؟

بازم متشکرم از کمکتون

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)