מערכים

מערכים

שלום, אני כותבת ב-ASP.NET , #C אני מנסה ליצור מערך של buttons דרך הקוד, ולשייך לכל הלחצנים את אותו אירוע. ניסיתי כך:
protected System.Web.UI.WebControls.Button [] ButtonsArr; private void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { ButtonsArr =new Button[5]; for (int i=0;i<5;i++) { ButtonsArr=new Button(); ButtonsArr.DataBind(); this.ButtonsArr.Click += new System.EventHandler(this.Button1_Click); PlaceHolder1.Controls.Add(ButtonsArr); } }

הלחצנים הוצגו, אבל כשלחצתי על אחד מהם לא הגעתי לפונקציה המוגדרת באירוע והם נעלמו! שאלותי: 1) האם אני צריכה להוציא אותם מה-isPostBack ולמה? 2) למה לא הגעתי לאירוע? 3) אם אני כן אגיע לאירוע, איך אני מזהה איזה לחצן נלחץ? תודה רבה על עזרתכם
 

yuval k

New member
תשובות

1. כן, את צריכה להוציא אותם מה-IsPostBack!. הסיבה לכך היא שהדף לא זוכר שהם קיימים על הדף. גם היצירה של הקונטרולים האחרים לא מותנת בזה שאין הטעינה postback... כנ"ל לגבי האירוע... 3. הפרמטר sender (צריך לעשות לו cast).
 
תודה, בקשר ל-3 ../images/Emo26.gif

עשיתי casting ועדיין אני לא מבינה איך אני יודעת איזה לחצן במערך הוא זה שנלחץ, כלומר מה ה-i של הלחצן. תודה שוב
 

yuval k

New member
על המחרוזת שמכילה את שם הכפתור...

את יכולה, לחילופין, להשתמש במאפיין Tag - אין לו שימוש מסויים, הוא נועד לשימוש לפי שיקול דעת וצורכי המתכנת... [שוב, מסוג object]
 
את הרעיון של תג הבנתי, אבל לא הבנתי

את הכותרת של ההודעה שלך "על המחרוזת שמכילה את שם הכפתור" מאיפה יש לי את המחרוזת הזו? זו בדיוק השאלה שלי! ToString מביא לי רק את הסוג - System.....Button
 

yuval k

New member
../images/Emo122.gif משום מה חשבתי שמדובר ב-

WinForms... עיוותּי את הבעיה לגמרי
 
אם אתה מתכוון

שאני אעשה משהו כמו:
ButtonsArr.IndexOf((Button)sender);​
אז זה רעיון טוב הבעיה היא של-ButtonsArr אין פונקציה בשם IndexOf................. תודה
 

gilad g

New member
למען האמת..

התכוונתי לזה:
int i = Array.IndexOf(ButtonsArr, (Button)sender);​
 
ועוד אחת ../images/Emo26.gif

בעצם........אותה אחת. אני מנסה מתוך פונקציה של timer לשנות דברים בדף, לדוגמא בתוך הפונקציה של הטיימר אני מחליפה image בתמונה קיימת. אני רואה שה-image השתנה, אבל בפועל התמונה לא מתחלפת. אם אני אוכל לגרום לדף לעשות PostBack אז אני מקווה שהוא יציג את השינויים. אולי יש רעיון אחר? דרך יותר טובה לממש את זה? לא אכפת לי גם להשתמש ב-sleep הבעיה היא שאז לא רואים את התמונה הראשונה אלא רק את האחרונה...
 
ואחרון../images/Emo26.gif

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

yuval k

New member
למה ככה? ../images/Emo4.gif

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

אני לא יודעת מראש מה ה-img שאני אמורה להחליף, אני לוקחת את זה מה-DB....
 

adam222

New member
אז תביאי במערך JS

את כל התמונות מה-DB ותשלפי בצורה הנכונה בצד-לקוח
 
תודה, אחרי מה שיובל אמר

חשבתי לעשות כך. ובלי קשר (או עם) אפשר לרענן את הדף באופן יזום?
 
למעלה