Calendar בasp .net ,c#

  • פותח הנושא jbu
  • פורסם בתאריך

jbu

New member
Calendar בasp .net ,c#

הי, אני עשיתי Calendar ועכשיו אני שובר את הראש איך להגדיר לו שימי שישי ושבת יהיו ב disable . משהוא יכול לעזור לי?
 

J u n k y

New member
כתבת calendar משלך?

אם כן, אז יש לך property במחלקה DateTime שנקרא DayOfWeek. אתה יכול גם להתחכם ולהחליט איזה יום בשבוע לבטל לפי ה - FirstDayOfWeek. ככה בישראל תבטל שישי ושבת, ואצל הגויים ימ"ש תבטל את שבת וראשון.
 

J u n k y

New member
הייתי מנסה

להריץ לולאה על האוסף Controls ואז בדרך לא דרך לזהות מה התאריך של אותו control ולעשות לו Enabled=false.
 

J u n k y

New member
אז קדימה לעבודה

לכתוב calendar משלך - זה לא מסובך כמו שזה נשמע.
 

jbu

New member
הכול בגלל שחסר PROPETY אחד?

הכול בגלל שחסר PROPETY אחד? יש דרך לחשב איזה יום יוצא התאריך שבחרתי? אולי אני פשוט יעשה POP BOX שתגיד לו שהוא לא יכול לבחור את היום הזה.
 

jbu

New member
לא משנה

הצלחתי להמיר אותם, עכשיו אני צריך רק לדעת איך משנים את כול העמודה.
 

HaRmosh

New member
פתרון !

לרשת מ-Calendar ולממש את המתודה OnDayRender בעצמך, כך תבדוק שהתאריך (שמועבר אליה כפרמטר) הוא לא שישי או שבת, ותפלוט כ-HTML את הפרשנות שלך ל-disable (סתם מספר במקום לינק, כמו בכל יום ? איך שבא לך). אני יישמתי משהו דומה ב-99% לזה, עובד יופי.
 

24sharon

New member
דוגמא למימוש

public class myCalendar: Calendar { protected override void OnDayRender(TableCell cell ,CalendarDay day) { if (Convert.ToInt32(day.Date.DayOfWeek) == 5 || Convert.ToInt32(day.Date.DayOfWeek) == 6) { day.IsSelectable = false; } // Let the base class raise this event. base.OnDayRender(cell, day); } }​
והתוצאה בתמונה >>>
 

dino_din

New member
לא צריך הרבה. זה כבר קיים

תעשה חיפוש בגוגל, לפני שבועיים עשיתי את זה וזו אפשרות שכבר קיימת. אפשר לדרוס את DayRender גם בפקד המקורי בלי לרשת ולממש את כל הפקד מחדש ולבטל את האפשרות לבחור ימים מסויימים. באירוע DayRender תבדוק אם היום שמעובד כרגע הוא שישי/שבת ואם כן תשנה לו את המאפיין המתאים (IsSelectable = false;) בהצלחה.
 

jbu

New member
אבל אם אני עושה את זה

אבל אם אני עושה את זה כך, אז אני לא משנה את העמודה רק אחרי שהמשתמש כבר לחץ עליו?
 

24sharon

New member
תבדוק את הקוד הזה

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Calendar1_DayRender(object sender, DayRenderEventArgs e) { if (Convert.ToInt32(e.Day.Date.DayOfWeek) == 5 || Convert.ToInt32(e.Day.Date.DayOfWeek) == 6) { e.Day.IsSelectable = false; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Calendar ID="Calendar1" runat="server" OnDayRender="Calendar1_DayRender"></asp:Calendar> </div> </form> </body> </html>​
בהצלחה
 

jbu

New member
וואו זה עובד נהדר

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