משיב מוביל
Grid viewעם scroll bar קופץ (וויזואלית)

שאלה
-
תשובות
-
זה לא "סתם" קופץ למעלה אלא הרבה יותר גרוע כניראה :-)
זה טוען את כל העמוד מחדש ומבצע את כל הפנייה מאחרוי הקלעים לשרת מסדי הנתונים, ולכל פעולה שצריך היה לבצע כדי לבנות את העמוד מחדש, כניראה ואז בונה את כל העמוד מחדש! לכן גם כאשר את מגיעה שוב לעמוד את נמצאת למעלה כמו כל מעבר לעמוד חדש.
* כאשר את יוצרת פרוייקט חדש ובחרת ב asp.net empty web application זה עדיין לא אומר לנו איזה טכנולוגיה נבחרה. (1) אם אני זוכר טוב בגרסאות קודמות זה היה שונה מגרסת 2013 (2) תבנית ריקה אומר שאת יכולה לעבוד ב MVC או ב webform למשל, ואלו טכנולוגיות שמתנהגות שונה לחלוטין.
לפי השימוש ב
runat="server"
אני מניח שאת עובדת ב webform ומכאן נובעים כל הבעיות שלך. זו טכנולוגיה גרועה שמתבססת על מסלול חיים ארוך ומורכב שצריך להבין אותו ואת הרעיון שלו לפני שממשיכים בכתיבת קוד ואירועים. חוסר הבנה יוצתר בלבול בין אירועים בצד הדפדפן ואירועים בצד השרת.הפתרון הרשמי לפעילות כזו של טעינת חלק מהעמוד או שימוש ב AJAX בטכנולוגיה זו מוסברת בקישור הבא:
http://www.asp.net/web-forms/overview/older-versions-getting-started/aspnet-ajax/understanding-partial-page-updates-with-asp-net-ajax
זה פתרון עלוב וגרוע מאוד שאני אישיתי לא הייתי מסכים לראות בשום אפליקציה שפותחה ב 5 שנים האחרונות לפחות!בעקרון מה שאני מזהה בקוד:
את האלמנט של ה Grid_User את מעבדת בצד השרת :
runat="server"האירוע SELECT הוא אירוע בצד הדפדפן, אבל כפי הנראה את מעבדת את האירוע בצד השרת!
במתודה בשם OnSelectedIndexChanged אם אני שם לב טוב את פונה למתודה בשרת.כל הגישה הזו של פנייה לשרת בכל SELECT אינה נכונה בדרך כלל והיא חלק מהבעיות שיצרה טכנולוגיית WEBFORM בברירת המחדל. את צריכה להשתמש בפונקציה בצד הלקוח (JS).
http://stackoverflow.com/questions/22498929/how-to-prevent-page-refresh-on-select-change-for-dropdownlist-in-mvc
* תבדקי את הקישור הבה גם כן:
http://forums.asp.net/t/1565605.aspx?Avoid+postback+operation+for+asp+dropdown+onselected+index+changing+
Ronen Ariely
[Personal Site] [Blog] [Facebook]
- נערך על-ידי pituachMVP, Moderator יום ראשון 03 מאי 2015 07:52
- הוצע כתשובה על-ידי Eran Sharvit יום ראשון 03 מאי 2015 11:26
- סומן כתשובה על-ידי Eran Sharvit יום שלישי 05 מאי 2015 17:37
כל התגובות
-
שבת שלום שורי,
אנא נסי להביהר את השאלה את השאלה עם יותר רפרטם פרטים מה את עושה, מה ההתנהגות שאת רוצה שיהיה ומה בדיוק ההתנהגות הבעייתי כרגע, באיזה טכנולוגיה את עובדת, נסי לצרף את הקוד הרלוונטי (לפי מה שאני מבין מההודעה הקצרה הבעיה כניראה קשורה לצד הלקוח, אם כך אנחנו צריכים את הקוד של צד הלקוח - ה VIEW)
Ronen Ariely
[Personal Site] [Blog] [Facebook] -
שבוע טוב!
asp.net empty web application
יש לי scrollbar לגריד וכשאני גוללת למטה ובוחרת שורה זה קופץ למעלה אני רוצה שישאר ולא יקפוץ לכיון מעלה,
זה הגריד כולל הscrollbar,
<div id="divScroll" style="height: 180px; width: 427px; overflow: auto;" > <asp:GridView ID="Grid_User" Enabled="false" runat="server" ShowHeader="False" OnRowDataBound="OnRowDataBound" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" Height="16px" OnSelectedIndexChanged="OnSelectedIndexChanged" Width="22px" > <AlternatingRowStyle BackColor="White" /> <EditRowStyle BackColor="#7C6F57" /> <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#E3EAEB" /> <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#F8FAFA" /> <SortedAscendingHeaderStyle BackColor="#246B61" /> <SortedDescendingCellStyle BackColor="#D4DFE1" /> <SortedDescendingHeaderStyle BackColor="#15524A" /> <Columns> <asp:TemplateField HeaderText="Username" SortExpression="UserReviewId"> <ItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Username")%>' Width="70"> </asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="name" SortExpression="UserReviewId"> <ItemTemplate> <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("name") %>' Width="70"> </asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Password" SortExpression="UserReviewId"> <ItemTemplate> <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("password") %>' Width="70"> </asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Mobile" SortExpression="UserReviewId"> <ItemTemplate> <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("mobile") %>' Width="70"> </asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Address" SortExpression="UserReviewId"> <ItemTemplate> <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("address") %>' Width="70"> </asp:TextBox> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div>
protected void OnRowDataBound(object sender,GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(Grid_User, "Select$" + e.Row.RowIndex); e.Row.ToolTip = "Click to select this row."; } }
בלחיצה על שורה,
protected void OnSelectedIndexChanged(object sender, EventArgs e) { Button3.Visible = true; Button4.Visible = true; but_upd.Visible = true; TextBox a; string a1=""; foreach (GridViewRow row in Grid_User.Rows) { if (row.BackColor == ColorTranslator.FromHtml("#A1DCF2")) { row.BackColor = ColorTranslator.FromHtml(null); } } Button3.Enabled = true; Button4.Enabled = true; but_upd.Enabled = true; Grid_User.SelectedRow.BackColor = ColorTranslator.FromHtml("#A1DCF2"); foreach (GridViewRow row in Grid_User.Rows) { if (row.BackColor == ColorTranslator.FromHtml("#A1DCF2")) { a=(TextBox)row.FindControl("TextBox1"); a1=a.Text; } } Session["Te"] =a1; }
- נערך על-ידי שורי יום ראשון 03 מאי 2015 05:36
-
זה לא "סתם" קופץ למעלה אלא הרבה יותר גרוע כניראה :-)
זה טוען את כל העמוד מחדש ומבצע את כל הפנייה מאחרוי הקלעים לשרת מסדי הנתונים, ולכל פעולה שצריך היה לבצע כדי לבנות את העמוד מחדש, כניראה ואז בונה את כל העמוד מחדש! לכן גם כאשר את מגיעה שוב לעמוד את נמצאת למעלה כמו כל מעבר לעמוד חדש.
* כאשר את יוצרת פרוייקט חדש ובחרת ב asp.net empty web application זה עדיין לא אומר לנו איזה טכנולוגיה נבחרה. (1) אם אני זוכר טוב בגרסאות קודמות זה היה שונה מגרסת 2013 (2) תבנית ריקה אומר שאת יכולה לעבוד ב MVC או ב webform למשל, ואלו טכנולוגיות שמתנהגות שונה לחלוטין.
לפי השימוש ב
runat="server"
אני מניח שאת עובדת ב webform ומכאן נובעים כל הבעיות שלך. זו טכנולוגיה גרועה שמתבססת על מסלול חיים ארוך ומורכב שצריך להבין אותו ואת הרעיון שלו לפני שממשיכים בכתיבת קוד ואירועים. חוסר הבנה יוצתר בלבול בין אירועים בצד הדפדפן ואירועים בצד השרת.הפתרון הרשמי לפעילות כזו של טעינת חלק מהעמוד או שימוש ב AJAX בטכנולוגיה זו מוסברת בקישור הבא:
http://www.asp.net/web-forms/overview/older-versions-getting-started/aspnet-ajax/understanding-partial-page-updates-with-asp-net-ajax
זה פתרון עלוב וגרוע מאוד שאני אישיתי לא הייתי מסכים לראות בשום אפליקציה שפותחה ב 5 שנים האחרונות לפחות!בעקרון מה שאני מזהה בקוד:
את האלמנט של ה Grid_User את מעבדת בצד השרת :
runat="server"האירוע SELECT הוא אירוע בצד הדפדפן, אבל כפי הנראה את מעבדת את האירוע בצד השרת!
במתודה בשם OnSelectedIndexChanged אם אני שם לב טוב את פונה למתודה בשרת.כל הגישה הזו של פנייה לשרת בכל SELECT אינה נכונה בדרך כלל והיא חלק מהבעיות שיצרה טכנולוגיית WEBFORM בברירת המחדל. את צריכה להשתמש בפונקציה בצד הלקוח (JS).
http://stackoverflow.com/questions/22498929/how-to-prevent-page-refresh-on-select-change-for-dropdownlist-in-mvc
* תבדקי את הקישור הבה גם כן:
http://forums.asp.net/t/1565605.aspx?Avoid+postback+operation+for+asp+dropdown+onselected+index+changing+
Ronen Ariely
[Personal Site] [Blog] [Facebook]
- נערך על-ידי pituachMVP, Moderator יום ראשון 03 מאי 2015 07:52
- הוצע כתשובה על-ידי Eran Sharvit יום ראשון 03 מאי 2015 11:26
- סומן כתשובה על-ידי Eran Sharvit יום שלישי 05 מאי 2015 17:37