none
DropDown RRS feed

  • שאלה

  • אני מנסה לטעון את קובץ ה-XML הבא:

     <?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>
    

    יש לי 3 artist שלכל אחד יש כמה albums ובתוכו כמה songs.

    אני צריכה ליצור 2 dropDown שאחד יציג שמות האומנים והשני- את האלבומים שלהם (כמובן לפי ה-dropDown הראשון, שם האומן).

    ניסיתי את הקוד הבא:

    DataSet ds = new DataSet();
    
        string xmlPath = HttpContext.Current.Server.MapPath(@"App_Data/Artists.xml");
        ds.ReadXml(xmlPath);
    
        Artist_DDL.DataSource = ds.Tables["Artist"].Rows[0]["name"].ToString();
        Artist_DDL.DataBind();
    
    אבל יצא שהדרופ דאון מציג אותיות ולא את שם האומן בשלמותו. למה?

     

    יום חמישי 14 יולי 2011 20:03

תשובות

  • יש שתי שיטות להכניס נתונים לDDL.

    1. ע"י ביצוע binding ל data sorce שכאשר עושים את זה בעזרת האובייקטים sqldatasorce או xmldatasorce זה די קל ופשוט. (תוסיפי DDL ותלחצי על החץ הקטן שמעליו כשאת בתצוגת דיזיינר ודרך האשף שם תחברי את הDDL למקור הנתונים)

    2. ע"י לולאה שרצה על מקור הנתונים (יכול להיות טבלה ב data set ויכול להיות List כל שהוא), ומכניסה את האברים (הרצוים, את יכולה לפלטר אותם) לDDL 'ידנית'. לדוגמא:

     

     Dim Mylist() As String
    Mylist(0)="aa"
    Mylist(1)="bb"
    Mylist(2)="nn"
      For i As Integer = 0 To Mylist.Count - 1
       DDL.Items.Add(Mylist(i))
      Next
    

     

     


    בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.
    • סומן כתשובה על-ידי Shirly11 יום שישי 15 יולי 2011 12:10
    יום שישי 15 יולי 2011 10:59

כל התגובות

  • נסי ב dataSorce להעביר רק את שם הטבלה ובמאפיין dataMember את העמודה שאת התוכן שלה את רוצה למלא בDDL
    בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.
    יום חמישי 14 יולי 2011 20:18
  • ובמאפיין dataMember? למה הכוונה?

    עדיין לא מצליח לי...


    יום חמישי 14 יולי 2011 20:27
  • כך:

    DDL.DataSource = DataSet.Tables(0)
        DDL.DisplayMember = "Name"
    


    בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.
    יום חמישי 14 יולי 2011 20:50
  • הוא לא נותן לי לכתוב את ה-DL.DisplayMember..

    אבל בינתיים ניסיתי משהו אחר:

    string xmlPath = HttpContext.Current.Server.MapPath(@"App_Data/Artists.xml");
        XmlDocument doc = new XmlDocument();
    
        doc.Load(xmlPath);
    
        XmlNodeList namesList = doc.GetElementsByTagName["Artist"];
    

    וקיבלתי את השגיאה הבאה על השורה האחרונה, אני משתגעת..לא מבינה מה לא בסדר פה..

    Error 1 Cannot apply indexing with [] to an expression of type 'method group' C:\Users\Adva\Documents\Visual Studio 2010\WebSites\Artists\Default.aspx.cs 19 33 C:\...\Artists\

    יום חמישי 14 יולי 2011 21:03
  • סליחה, זה קוד מwin app.

    כך:

     DDL.DataMember = "Name"
    


    בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.
    יום חמישי 14 יולי 2011 21:54
  • עדיין לא עובד..אף פעם לא ידעתי שכ"כ קשה להכניס נתונים לDropDown
    יום שישי 15 יולי 2011 06:26
  • יש שתי שיטות להכניס נתונים לDDL.

    1. ע"י ביצוע binding ל data sorce שכאשר עושים את זה בעזרת האובייקטים sqldatasorce או xmldatasorce זה די קל ופשוט. (תוסיפי DDL ותלחצי על החץ הקטן שמעליו כשאת בתצוגת דיזיינר ודרך האשף שם תחברי את הDDL למקור הנתונים)

    2. ע"י לולאה שרצה על מקור הנתונים (יכול להיות טבלה ב data set ויכול להיות List כל שהוא), ומכניסה את האברים (הרצוים, את יכולה לפלטר אותם) לDDL 'ידנית'. לדוגמא:

     

     Dim Mylist() As String
    Mylist(0)="aa"
    Mylist(1)="bb"
    Mylist(2)="nn"
      For i As Integer = 0 To Mylist.Count - 1
       DDL.Items.Add(Mylist(i))
      Next
    

     

     


    בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.
    • סומן כתשובה על-ידי Shirly11 יום שישי 15 יולי 2011 12:10
    יום שישי 15 יולי 2011 10:59