DCSIMG
MS AJAX CollapsiblePanel Blinks - Tamir Shlomi's Blog

Tamir Shlomi's Blog

Welcome to Tamir Shlomi's blog. All about .NET, OOP and SQL server

MS AJAX CollapsiblePanel Blinks

בעייה: כשעובדים עם הפקדים של MS AJAX Toolkit לעיתים קורה מצב שבעליית הטופס
פקדים מסויימים, שאמורים לעלות במצב "collapsed" עולים "expanded" לחלקיק השניה
ומיד נסגרים.

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

מכיוון שה alert עולה ב load של הטופס, חל עיכוב בטעינת ה form ובעצם מה שקרה זה
שה CollapsiblePanel שלי, "נתקע" במצב "expanded" במקום "collapsed" עד לאחר
ה "ok" של ה alert.

מעיק.

הפתרון היה לשחק עם ה style של ה panel ולשנות את הגדרת ה display שלו לפני ואחרי
הצגת ה alert.

הקוד שמבצע את שתילת ה alert:

public void ShowJSAlert(string message)
{
     
StringBuilder script = new StringBuilder();
      script
       .Append("<script type=\"text/javascript\">")
       .Append(Environment.NewLine)
       // Get the panel control
       .Append("var panel = $get('")
       // Get the collapsible panel clientID
       .Append(this.panelContent.ClientID)
       .Append("');")
       .Append(Environment.NewLine)
       // Set its display to 'none' to avoid blink
       .Append("panel.style.display= 'none';")
       .Append(Environment.NewLine)
       .Append("alert('")
       .Append(message)
       .Append("');")
       .Append(Environment.NewLine)
       // Display it back for repeated use
       .Append("panel.style.display= 'block';")
       .Append(Environment.NewLine)
       .Append("</script>");

            ScriptManager.RegisterClientScriptBlock(
                    this, this.GetType(), "alert",
                    script.ToString(), false);

}

בקוד הזה, יוצרים את ה script שישתל ואת ההודעה שתוצג ב alert.
בהתחלה מאתרים את ה panel הבעייתי, ומגדירים את ה style.display שלו כ 'none'.
עכשיו כשנציג את ה alert הוא לא ייפתח.
כמובן שמיד אח"כ חשוב להחזיר אותו למצב הרגיל (בעזרת 'style.display = 'block) וזאת על מנת
שיהיה ניתן להמשיך להציג אותו בעזרת ה CollapsiblePanelExtender.

עכשיו אין blink מרגיז של ה panel בהצגת אישור על ביצוע שמירה.

Comments

No Comments

Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: