سلام
من یه وبسایت به کمک Asp.net WebForms ایجاد کردم و برای واکشی اطلاعات در جاهای مختلف از UpdatePanel استفاده کردم،وقتی روی سیستم خودم (localhost) داشتم باهاش کار میکردم همه کد های پشت به صورت ایده آل و در چند ثانیه انجام میشد ولی وقتی وبسایت رو پابلیش کردم کوچکترین کار های سمت سرور مدت زمان خیلی زیادر رو نیاز داره،مثلا DropDown های این صفحه
کد دیزاین این صفحه :
<section id="blogs" class="row"> <div class="container" style="text-align: right"> <div class="filters"> <label class="filtersLable" for="ddlGroups">فیلتر ها : </label> <div id="divDDL" class="ddlContainer"> <div> <label for="ddlGroups">گروه اصلی : </label> <asp:DropDownList ID="ddlGroups" class="DDLClass" AutoPostBack="true" OnSelectedIndexChanged="ddlGroups_SelectedIndexChanged" runat="server"></asp:DropDownList> </div> <div> <label>زیر گروه : </label> <asp:UpdatePanel ID="updatepanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"> <ContentTemplate> <asp:DropDownList ID="ddlSubGroups" OnSelectedIndexChanged="ddlSubGroups_SelectedIndexChanged" AutoPostBack="true" CssClass="DDLClass" runat="server"></asp:DropDownList> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddlGroups" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> <asp:UpdateProgress ID="updateProgress1" runat="server" DisplayAfter="0"> <ProgressTemplate> <div style="position: fixed; text-align: center; height: 100%; padding-top: 100px; width: 100%; top: 0; right: 0; left: 0; z-index: 9999999; background-color: #ffffff; opacity: 0.8;"> <asp:Image ID="imgUpdateProgress" runat="server" ImageUrl="~/_construction/images/44frgm.gif" AlternateText="Loading ..." ToolTip="Loading ..." Style="padding: 10px; top: 45%; left: 50%;" /> </div> </ProgressTemplate> </asp:UpdateProgress> </div> </div> </div> <asp:UpdatePanel ID="updatepanel5" ChildrenAsTriggers="false" UpdateMode="Conditional" runat="server"> <ContentTemplate> <div class="row" id="easyPaginate"> <ul runat="server" id="UlArticles"> </ul> </div> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="ddlGroups" EventName="SelectedIndexChanged" /> <asp:AsyncPostBackTrigger ControlID="ddlSubGroups" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel> <asp:UpdateProgress ID="updateProgress2" runat="server" DisplayAfter="0"> <ProgressTemplate> <div style="position: fixed; text-align: center; height: 100%; padding-top: 100px; width: 100%; top: 0; right: 0; left: 0; z-index: 9999999; background-color: #ffffff; opacity: 0.8;"> <asp:Image ID="imgUpdateProgress2" runat="server" ImageUrl="images/44frgm.gif" AlternateText="Loading ..." ToolTip="Loading ..." Style="padding: 10px; top: 45%; left: 50%;" /> </div> </ProgressTemplate> </asp:UpdateProgress> </div> </section>
و کد پشت :
protected void ddlGroups_SelectedIndexChanged(object sender, EventArgs e) { if (ddlGroups.SelectedValue != "-2") { GroupsRepository Groupsrepo = new GroupsRepository(); DataTable DT = new DataTable(); DT = Groupsrepo.LoadSubGroup(ddlGroups.SelectedValue.ToInt()); if ((DT.Rows.Count > 0)) { ddlSubGroups.Enabled = true; ddlSubGroups.DataSource = DT; ddlSubGroups.DataTextField = "Title"; ddlSubGroups.DataValueField = "GroupID"; ddlSubGroups.DataBind(); ddlSubGroups.Items.Insert(0, new ListItem("همه زیر گروه ها", "-2")); } else { ddlSubGroups.Enabled = false; ddlSubGroups.Items.Clear(); ddlSubGroups.Items.Insert(0, new ListItem("گروه : " + ddlGroups.SelectedItem.ToString(), ddlGroups.SelectedValue.ToString())); } //load posts List<int> subgroupsid = Groupsrepo.getSubGroupsIDByFatherID(ddlGroups.SelectedValue.ToInt()); ArticleRepository artrep = new ArticleRepository(); List<Article> articles = artrep.ReturnArticlesByCategory(subgroupsid); if (articles.Count != 0) { fillUl(articles); } else { UlArticles.InnerHtml = " <li class='danger'>در این بخش مقاله ای وجود ندارد!</li> "; ddlSubGroups.SelectedIndex = 0; ddlSubGroups.Enabled = false; ddlSubGroups.Items.Insert(0, new ListItem("همه زیرگروه ها", "-2")); } } else { ArticleRepository ArtRep = new ArticleRepository(); List<Article> Articles = ArtRep.AllArticles(); fillUl(Articles); ddlSubGroups.SelectedIndex = 0; ddlSubGroups.Enabled = false; } ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "run()", true); ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "myFunction()", true); } protected void ddlSubGroups_SelectedIndexChanged(object sender, EventArgs e) { if (ddlSubGroups.SelectedValue != "-2") { ArticleRepository artrep = new ArticleRepository(); List<Article> articles = artrep.ReturnArticlesByCategory(ddlSubGroups.SelectedValue.ToInt()); if (articles.Count != 0) { fillUl(articles); } else { UlArticles.InnerHtml = " <li class='danger'>در این بخش مقاله ای وجود ندارد!</li> "; } } else { GroupsRepository Groupsrepo = new GroupsRepository(); List<int> subgroupsid = Groupsrepo.getSubGroupsIDByFatherID(ddlGroups.SelectedValue.ToInt()); ArticleRepository artrep = new ArticleRepository(); List<Article> articles = artrep.ReturnArticlesByCategory(subgroupsid); if (articles.Count != 0) { fillUl(articles); } else { UlArticles.InnerHtml = " <li class='danger'>در این بخش مقاله ای وجود ندارد!</li> "; } } ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "run()", true); ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "myFunction()", true); }
آیا راهی برای بهتر کردن عملکرد آپدیت پنل ها وجود داره؟
راه حل جایگزین چی میتونه باشه؟
من با gridview_RowCommand هم همینقدر مشکل دارم و نمیدونم اشتباهم کجاست
بهتره مستقیما خودتون Ajax کد بزنید
UpdatePanel خیلی سنگینه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)