none
Grid viewעם scroll bar קופץ (וויזואלית) RRS feed

  • שאלה

  • הגריד קופץ מבחינה ויזואלית.נייסתי את הקודים הבאים וזה לא עזר.
    

    MaintainScrollPositionOnPostback="true" 


    <script>
        function scrollWin() {
            window.scrollTo(500, 0)
        }
    </script>
    <body>
    תודה.


    • נערך על-ידי שורי יום חמישי 30 אפריל 2015 13:25
    יום חמישי 30 אפריל 2015 13:21

תשובות

  • זה לא "סתם" קופץ למעלה אלא הרבה יותר גרוע כניראה :-)

    זה טוען את כל העמוד מחדש ומבצע את כל הפנייה מאחרוי הקלעים לשרת מסדי הנתונים, ולכל פעולה שצריך היה לבצע כדי לבנות את העמוד מחדש, כניראה ואז בונה את כל העמוד מחדש! לכן גם כאשר את מגיעה שוב לעמוד את נמצאת למעלה כמו כל מעבר לעמוד חדש.

    * כאשר את יוצרת פרוייקט חדש ובחרת ב 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+


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]



    • נערך על-ידי pituachMVP, Moderator יום ראשון 03 מאי 2015 07:52
    • הוצע כתשובה על-ידי Eran Sharvit יום ראשון 03 מאי 2015 11:26
    • סומן כתשובה על-ידי Eran Sharvit יום שלישי 05 מאי 2015 17:37
    יום ראשון 03 מאי 2015 07:42
    מנחה דיון

כל התגובות

  • שבת שלום שורי,

    אנא נסי להביהר את השאלה את השאלה עם יותר רפרטם פרטים מה את עושה, מה ההתנהגות שאת רוצה שיהיה ומה בדיוק ההתנהגות הבעייתי כרגע, באיזה טכנולוגיה את עובדת, נסי לצרף את הקוד הרלוונטי (לפי מה שאני מבין מההודעה הקצרה הבעיה כניראה קשורה לצד הלקוח, אם כך אנחנו צריכים את הקוד של צד הלקוח - ה VIEW)


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    שבת 02 מאי 2015 21:06
    מנחה דיון
  •     

    שבוע טוב!

     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
    יום ראשון 03 מאי 2015 05:34
  • זה לא "סתם" קופץ למעלה אלא הרבה יותר גרוע כניראה :-)

    זה טוען את כל העמוד מחדש ומבצע את כל הפנייה מאחרוי הקלעים לשרת מסדי הנתונים, ולכל פעולה שצריך היה לבצע כדי לבנות את העמוד מחדש, כניראה ואז בונה את כל העמוד מחדש! לכן גם כאשר את מגיעה שוב לעמוד את נמצאת למעלה כמו כל מעבר לעמוד חדש.

    * כאשר את יוצרת פרוייקט חדש ובחרת ב 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+


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]



    • נערך על-ידי pituachMVP, Moderator יום ראשון 03 מאי 2015 07:52
    • הוצע כתשובה על-ידי Eran Sharvit יום ראשון 03 מאי 2015 11:26
    • סומן כתשובה על-ידי Eran Sharvit יום שלישי 05 מאי 2015 17:37
    יום ראשון 03 מאי 2015 07:42
    מנחה דיון