RegisterClientScriptBlock - מעניין:

gilad g

New member
אז תשלוף את כל ה-Nodes

ל-Dataset אחד, ותעבור על הרשומות בדאטאבייס בצורה רקורסיבית.
 

דונג

New member
OK...SO...

יש לי את כל הרשומת ב DS, אני לא ממש מצליח לחשוב על תנאי עצירה ראוי, ועל שיטת רקורסיבית שתאכלס לי את העץ...
 

דונג

New member
OK...SO...

יש לי את כל הרשומת ב DS, אני לא ממש מצליח לחשוב על תנאי עצירה ראוי, ועל שיטת רקורסיבית שתאכלס לי את העץ...
 

דונג

New member
../images/Emo24.gifאני מאוד אשמח !!! ../images/Emo47.gif

מכיוון שאני לא ממש בכיוון
יש לי DataSet המכיל את כל הפריטים שאני רוצה שיופיע בעץ (אפשר לחשוב לע זה כעל קטלוג פריטים בחנות). עבור כל פריט/רשומה, יש לי (בין השאר) : קוד פריט תאור קוד אב כאשר לאבות הראשיים (מי שנמצא ישירות תחת ה ROOT), קוד האבא שלהם הוא 0 (אפס), ולכל השאר קוד האבא שלהם הוא קוד פריט האבא
תודה !
 

דונג

New member
בעצם, אני חושב על משהו...

פונקציה המקבלת צומת בעץ. אם הצומת היא לא "אב" (פריט שקוד האב שלו הוא 0 (אפס), אזי מצא את האב (קרא לפונקציה) צור צומת. מממ... אני צריך לחשוב על זה
 
לדעתי משהו כזה...

רקורסיה(שם_אב1,TreeNode) { קח מהDB את כל הרשומות ששם האב שלהם זהה לשם_אב1 לולאה על מספר הרשומות שחזרו (אם המספר הוא 0 אז לא נכנס ללולאה) { הוסף ל-TREENODE ענף בשם הפריט שלח לרקורסיה(שם פריט, הענף החדש) } } בפעם הראשונה תשלח לרקורסיה את המספר 0 ואת הTREE עצמו.
 

דונג

New member
נשמע מצויין.... בעיה :

בעת ההרצה : Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object בגין הפקודה הזו : if (myData.Tables["Items"].Rows.Count) > 0 אני מנסה לבדוק האם נשלפו רשומות...
 

דונג

New member
הסתדרתי ../images/Emo13.gif

הבעיה היתה שהשתמשתי ב : (myCommand.Fill(myData במקום ב : ("myCommand.Fill(myData,"All רק חבל שלא הבנתי את זה מהשגיאה...
 
אני שמחה בשבילך

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

במקום לשאול אם יש רשומות, אתה יכול לכתוב כך:
int num=myData.Tables["Items"].Rows.Count; for(int i=0;i<num;i++) { }​
ואז זה ממילא לא יכנס ל-FOR ואתה חוסך שאלה מיותרת
 

gilad g

New member
תוכל להשתמש ב-XSL

כדי לבצע טרנספורמציה לפורמט שאתה צריך. זה פשוט, וניתן לעשייה ע"י פקודה אחת
(וגם אין צורך להתלכלך בסטרינגים למיניהם...) אני לא הייתי הולך על קריאה ישירות מהדטבייס, כי זה פחות פורטבילי... מה אם מחר הנתונים מגיעים מסתם קובץ XML ולא מה-DB
בכל אופן, בחיים לא הייתי בונה XML בתור סטרינג -- ל-Class Library יש כ"כ הרבה Classes שמטפלים ב-XML, שפשוט חבל.
 

דונג

New member
רגע רגע....../images/Emo122.gif../images/Emo77.gif../images/Emo47.gif

אמרת דברים מעניינים... פחות פורטבילי - אכן. לא היית בונה XML בתור סטרינג - OK, האם זה מה שעשיתי, או שזוהי הערה כללית ? והכי חשוב - "ניתן לעשייה ע"י פקודה אחת" + "יש כ"כ הרבה Classes שמטפלים ב XML" - איך ת'כלס אני עושה זאת ?
 

gilad g

New member
המממ ../images/Emo26.gif

"לא היית בונה XML בתור סטרינג - OK, האם זה מה שעשיתי, או שזוהי הערה כללית ?" הערה, בקשר למה ש-Admini אמר
"איך ת'כלס אני עושה זאת ?" שים לב

XSLTransform objTrans = new XSLTransform(); Response.Write(objTrans.Transform("c:\\my_xml.xml","c:\\my_xsl.xsl"));​
כמובן שלא חובה להשתמש בקבצים, אלא אפשר להשתמש ב-XmlReaders... וכו'. שווה לבדוק את ה-overloads של ()Transform.
 

דונג

New member
המממממ....../images/Emo142.gif../images/Emo65.gif

כלומר אני צריך לכתוב תוכנית קצרה ב XSL שתמיר את פורמט קובץ ה XML, מעולם לא כתבתי XSL (למרות שאני יודע שזה לא מסובך), אבל אינני רוצה להכנס לזה כעת :) תודה בכל מקרה !
 

nattygur

New member
תפעיל ACT ותבדוק RPS, נכון לגרסה

הזאת Binding ל XML עובד יותר לאט מאשר הוספה דינאמית. נקודה למחשבה ...
 
למעלה