יצירת controls דינמית

erezzi

New member
יצירת controls דינמית

אהלן! אני מייצר מערך של buttons ומכניס אותם לתוך אובייקט panel (שהוא סטטי). השאלה היא איפה בקוד להכניס את זה. הכנסתי את זה ל- Page_Load באופן הבא:
If (!IsPostBack) { create array of buttons and put in the panel object }​
הבעיה היא שאחרי postback (למשל לחיצה על כפתור), נעלם לי הפנל. האם אני צריך לייצר את כל הכפתורים האלה כאשר לוחצים על כפתור? תודה מראש ארז
 

nattygur

New member
הוספה דינאמית של פקדים

צריכה להעשות כל פעם שהדף נטען, גם ב PostBack. תוריד את IsPostBack.
 

erezzi

New member
בעיה

אני מבין שלא ניתן לחסוך את הפעולה הזאת וחייבים ליצור כל פעם מחדש. הבעיה היא אחרת - אני רוצה לשמור מצב שלהם (למשל אם אחד הכפתורים הפך להיות disabled וכו'). המידע הזה נשמר איכשהו?
 

erezzi

New member
כן, אני בדיוק קורא על זה

אני רואה שהוא שומר מצב אוטומטית - כל הכבוד למיקרוסופט ותודה על העזרה.
 

erezzi

New member
שאלה חדשה

אני חדש בעסק וכדי להתאמן אני כותב משחק פשוט (איקס עיגול) שיש לו דף ASP ואובייקט נוסף שמנהל את המשחק. המנהל הוא dll שיודע את מצב הלוח אצל השחקנים, שולח להם events ומחליט על נצחון. ממשתי אותו כ-singleton וכדי שלשני השחקנים יהיה reference אליו, שמתי אותו כ-static. האם התכנון הזה נכון? אני שואל כי מתעוררות לי לא מעט בעיות שאולי קשורות לתכנון לא נכון...
 

erezzi

New member
יכול להיות

אני רוצה שהמשחק ירוץ דרך הדפדפן. עדיין אני צריך מנהל למשחק. זה לא התפקיד של ASP...
 

gilad g

New member
שתי אופציות:

1. לבנות windows application, ולעשות שהEXE שלו רץ מתוך הדפדפן (יש אפשרות כזו
) 2. לבנות קוד צד לקוח חכם (javascript).
 

IgalR

New member
הבעיה העיקרית שלך תיהיה איך ליצור

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

erezzi

New member
אין משהו מקובל?

אין פתרון סטנדרטי לבעיה הזאת? גלעד - לא הבנתי למה אתה מתכוון ב-"צד לקוח חכם ".
 

nattygur

New member
יש כאן טיפול בשלוש שכבות

הראשונה ויזואלית והשניה לוגית. שכבה ויזואלית : כוללת הצגת הכלים והשולחן ומתן אפשרות לשחקן להניע את הכלים. כל תנועה של שחקן צריכה להשלח לשכבה הלוגית אשר תבדוק אם התנועה חוקית, תשמור אותה ותעדכן את היריב. השלב הזה די פשוט הוא דורש HTML ו DHTML בכדי להניע כלים. בכדי להשתמש בשכבה הלוגית ניתן לקרוא לארוע שלך בצד שרת אשר יחזיר תמונה מעודכנת או לחילופין אם כל התחנות משתמשות ב Explorer ניתן להשתמש ב XMLHTTP ולחסוך שליחת כל הדף מהשרת לתחנה. הבעיה העקרית בשכבה זאת היא העדכון האוטומטי של היריב משום שלא ניתן ליזום עדכון של תחנה משרת. בכדי לדעת שהיה שינוי בשרת (יריב זז) צריך ליזום שאילתה לשרת כל פסק זמן מסוים לבדוק את הסטטוס בשרת (האם היריב זז) ולעדכן את הדפדפן. ניתן להשתמש ב Meta tag (http equiv) בכדי ליזום Refresh אוטומטי של הדף כל שניה, לבדוק את המצב בשרת (נטפל בזה בשכבה הלוגית) ואם יש צורך להחזיר HTML חדש שייצג את תזוזת היריב. אם כל התחנות הם IE ניתן שוב להשתמש ב XMLHTTP ולמנוע הבהובים של השולחן. שכבה לוגית וגם נתונים : הבסיס כאן הוא ה Session ID שכל שחקן מקבל. כאשר שני שחקנים מתחילים משחק אתה צריך לשמור את ה SessionID שלהם במקום מרכזי (משותף לשניהם) לדוגמה DataSet ב Application. ה Dataset יכיל מספר טבלאות אשר יכילו מי משחק נגד מי ומה היו התנועות שלהם. והנה נולדה שכבה שלישית - שכבת נתונים. כל תנועה של משחק מגיעה לדף אשר שולח את התנועה (מקור,יעד ו SessionID) ל Assembly אשר מכיל לוגיקה. ה Assembly בודק ראשית את חוקיות התנועה תוך כדי שימוש בשכבת הנתונים (מיקומי יריב). אם הפעולה חוקית היא מבוצעת תוך כדי עדכון שכבת הנתונים ב מיקום החדש וסימון אינדיקציה כי פעולה בוצעה. כל Refresh אשר נועד לבדוק אם היריב ביצעה פעולה מגיע גם לדף אשר שולח לשכבת הלודיקה את ה SessionID של המשתמש. שכבת הלוגיקה משתמשת בשכבת הנתונים לבדוק אם היריב ביצע שינוי ומה השינוי ומחזירה אינדיקציה לדף אשר מחזיר HTML בהתאם (לא לשכח לאפס את האינדיקטור של השינוי) זהוא, מקווה שעזרתי
 

yuval k

New member
ובעקיפין הוא הראה לך למה לא כדאי

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