locked
UpdatePanel RRS feed

  • שאלה

  • בניתי דף אינטרנט עם 2 DropDown. כאשר אחד יש בו שמות זמרים והשני מציג את שמות האלבומים של אותו זמר (כמובן בהתאם לשם המופיע ב-DDL הראשון).

    כדי שלא כל הדף יעשה PostBack שמתי את ה-DDL השני ב-UpdatePanel והוספתי לו trriger.

    והבעיה שנוצרה היא כזאת: אני רוצה לעשות אירוע של SelectedIndexChange אבל אף פעם האירוע הזה לא מתעורר! כאשר הסרתי את ה-UpdatePanel - הוא כן התעורר!

    * ה-autoPostBack=true.

    מה יכולה להיות הבעיה?

    יום שני 28 מאי 2012 16:11

תשובות

  • אני מניח שבLOAD ALBUMS את לא עושה LOAD מחדש לקובץ XML וזה מה שחסר לך, קחי בחשבון שבדף ASP כל המשתנים וכו הכל נאבד ברגע שהוא שולח את הדף ללקוח, כלומר נניח שיש לי שם משנה בשם אריאל ואני מציב לו ברסלב ובפעם הבאה שיהיה פוסטבק אריאל יהיה ריק

    אני ממליץ לקחת את כל הLOAD של הXML ולשים אותו תחת LOAD ALBUMS 

    אפשרות שניה אם כ"כ חשוב לך לא לקרא את הקובץ מחדש זה לשים אותו בSESSION, שזה הדבר היחיד שנשמר כשהדף יחזור אליך (ואגב זה חשוף ללקוח אז לא לשים דברים שהוא לא אמור לראות)

    • סומן כתשובה על-ידי Shirly11 יום רביעי 30 מאי 2012 11:27
    יום רביעי 30 מאי 2012 07:03

כל התגובות

  • איזה Controls בדיוק מכיל ה-UpdatePanel?

    בעקרון ה-UpdatePanel אמור להכיל את החלק בדף אשר אמור להתעדכן באופן אסינכרוני ע"י קריאת AJAX

    ה-Triggers מכילים את ה-Controls אשר גורמים ל-UpdatePanel להתעדכן

    שוה לך להציץ בדוגמא הנקראת "DropDownsWithUpdatePanel" הנמצאת בלינק הבא:

    https://skydrive.live.com/#cid=E418C5DAA368F5FE&id=E418C5DAA368F5FE%21404

    יום שני 28 מאי 2012 21:14
    מנחה דיון
  • כן, בדיוק כך עשיתי.

    ה-UpdatePanel מכיל את ה-DDL השני שהרי רק הוא צריך להתעדכן, והTriggers הוא ה-DDL הראשון כאשר משנים בו את הבחירה.

    הבעיה היא שאני עשיתי אירוע של SelectedIndexChange על ה-DDL הראשון אך הוא אף פעם לא מתעורר...

    יום שני 28 מאי 2012 22:49
  • לא הבנת

    הוא חייב להכיל גם את הראשון - גם את זה שעושה טריגר וגם את זה שמתעדכן

    יום שלישי 29 מאי 2012 06:32
  • הכנסתי גם אותו.. האירוע SelectedIndexChange של ה-DDL הראשון עדיין לא מתעורר, כלומר, אם רציתי ש-DDL שני ישתנה לפי מה שהמשתמש בוחר בראשון-לא קורה כי האירוע לא מתעורר.

    מה הסיבה?

     
    • נערך על-ידי Shirly11 יום שלישי 29 מאי 2012 09:10
    יום שלישי 29 מאי 2012 08:03
  • תעזבי את כל הטריגרים, תעשי כפשוטו, 2 DDL בתוך הUPP כאשר לראשון יש AUTOPOSTBACK=TRUE

    אם לא עובד תעלי את הקוד (עדיף גם CS אם אפשר)

    יום שלישי 29 מאי 2012 10:49
  • פתרתי את הבעיה של האירוע שלא התעורר! אבל יש לי בעיה אחרת: ה-DDL השני משנה תוצאות רק כאשר זה דרך האירוע של PageLoad, ולא משתנה דרך האירוע של SelectedIndexChange (למרות שהוא מתעורר).
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Xml;
    using System.Data;
    
    public partial class _Default : System.Web.UI.Page 
    {
        public string albumName { get; set; }
    
        XmlDocument doc = new XmlDocument();
    
        protected void Page_Load(object sender, EventArgs e)
        {
            string xmlPath = HttpContext.Current.Server.MapPath(@"App_Data/Artists.xml");
    
            if (!IsPostBack)
            {
                doc.Load(xmlPath);
    
                XmlNodeList list = doc.GetElementsByTagName("Artist");
                foreach (XmlNode node in list)
                {
                    string artist = node.SelectSingleNode("@name").InnerText;
                    Art_nameDDL.Items.Add(artist);
                }
                LoadAlbums();
            }      
        }
    
        protected void Art_nameDDL_SelectedIndexChanged(object sender, EventArgs e)
        {
            LoadAlbums();
        }
    }
    <?xml version="1.0" encoding="utf-8" ?>
    <Artists>
      <Artist name="RadioHead">
        <Album  Year="1994">Pablo Honey
          <Song>Creep</Song>
          <Song>Just</Song>
        </Album>
        <Album Year="2000">Ok Computer
          <Song>Paranoid Android</Song>
          <Song>Karma Police</Song>
        </Album>
      </Artist>
      <Artist name="Pearl Jam">
        <Album  Year="1992">
         Ten
          <Song>Jeremy</Song>
          <Song>Daughter</Song>
          <Song>Black</Song>
        </Album>
      </Artist>
      <Artist name="Oasis">
        <Album  Year="1992">
          Definitly Maybe
          <Song>Whatever</Song>
          <Song>Supersonic</Song>
        </Album>
        <Album  Year="1992">
          Whats the story morning glory
          <Song>Whats the story morning glory</Song>
          <Song>Live Forever</Song>
          <Song>Champagne Supernova</Song>
          <Song>WonderWall</Song>
        </Album>
      </Artist>
    </Artists>
    תודה רבה רבה על העזרה!!!!!!!!! :-)

    יום שלישי 29 מאי 2012 16:04
  • האם הדוגמא שצירפתי לינק אליה יותר מוקדם עזרה?

    יום שלישי 29 מאי 2012 18:49
    מנחה דיון
  • האמת שכן, זה אפילו חיזק יותר את מה שחשבתי קודם.
    יום רביעי 30 מאי 2012 05:42
  • אני מניח שבLOAD ALBUMS את לא עושה LOAD מחדש לקובץ XML וזה מה שחסר לך, קחי בחשבון שבדף ASP כל המשתנים וכו הכל נאבד ברגע שהוא שולח את הדף ללקוח, כלומר נניח שיש לי שם משנה בשם אריאל ואני מציב לו ברסלב ובפעם הבאה שיהיה פוסטבק אריאל יהיה ריק

    אני ממליץ לקחת את כל הLOAD של הXML ולשים אותו תחת LOAD ALBUMS 

    אפשרות שניה אם כ"כ חשוב לך לא לקרא את הקובץ מחדש זה לשים אותו בSESSION, שזה הדבר היחיד שנשמר כשהדף יחזור אליך (ואגב זה חשוף ללקוח אז לא לשים דברים שהוא לא אמור לראות)

    • סומן כתשובה על-ידי Shirly11 יום רביעי 30 מאי 2012 11:27
    יום רביעי 30 מאי 2012 07:03
  • יואוו נכון!!! איך לא שמתי לב לזה!?! תודה רבה רבה, כולכם עזרתם לי מאוד!!
    יום רביעי 30 מאי 2012 11:27