שלום לכולם

Justin Angel

New member
שלום לכולם

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

itaysk

New member
ברוכים השבים + שאלה

באמת היה חסר לי קצת אדום בפורום, ממש כיף לקרוא תשובות מקיפות כמו שלך.. אם אפשר לדעת.. פתחת עסק ייעוץ? בהצלחה. מה השם? השאלה שלי: אני כותב ממשק הזנה לDB. משתמש ב gridview. עם asp.net2. יש רשימת לקוחות ולכל לקוח יש רשימת פרוייקטים. כשבוחרים לקוח רשימת הפרוייקטים מסתננת לפי הבחירה. כל זה צריך להשתמש ב caching. אני מקבל מה WS טבלה של כל הלקוחות וטבלה של כל הפרוייקטים ולאיזה לקוח הם משוייכים. נראה לי מייגע לקחת את המשתמש ל postback על כך בחירת לקוח כדי לסנן את הפרוייקטים. שאלה1 : מה הדרך הכי טובה להשתמש ב cache וליישם סינון אינטרקטיבי? (ajax? javascript? ) שאלה2: למרות שאין לי זמן להכנס לזה, כנראה שאצטרך להשתמש ב AJAX. יש כל מיני מחלקות ותוספים לעבודה עם AJAX, על איזה אתם ממליצים?
 

EdotK

New member
->

1. בלי שום cache, להשתמש בajax. 2. By far, להשתמש בajax.net של מיקרוסופט, שעכשיו הגיע לגרסת RC1. יצירת WebServices תוך כדי ריצה, עבודה בכל מצב, העברה של אובייקטים מורכבים לclient side, סיריאליזצית JSON, פשוט עשו עבודה טובה. ולתקן טעות נפוצה: Ajax.net זה לא ה Ajax Toolkit. אין שום קשר ביניהם. גם הUpdate Panel לא קשור. זה כלי שמשתמש בספריה ajax.net, וגם עובד מעולה, אבל זו לא הספריה עצמה ולא שם טמון הכוח (וההתלהבות שלי) של ajax.net.
 

itaysk

New member
אממ.. בקשר ל cache

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

itaysk

New member
פתרון שמצאתי.. תגובות

בצד שרת שמרתי את רשימת הפרוייקטים (מקסימום 100) ואת רשימת הלקוחות (מקסימום 20) במערכים של JS. בצד לקוח אני בונה את הDDL של הפרוייקטים לפי מה שבוחרים בלקוח. מה אתם אומרים?
 

itaysk

New member
זה לא כמות המידע, זה כמות הפוסטבקים

אין לי בעייה להעביר גם מגה של נתונים בשביל זה כי מדובר ברשת פנימית בעיקר. אבל, יש כאן 3 DDL שמסתננים אחד לפי השני וכל זה בשביל לקבל נתון אחד. וכשאתה בא להזין לדוגמא 5 רשומות בטופס תתטרך לעבור לפחות 15 פוסטבקים רק על הנתון הזה! לא כיף. בכל מקרה מה אתה חושב על הפתרון שלי? סביר?
 

EdotK

New member
אז לא רק שזה רק 120 רשומות

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

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

ב-Microsoft AJAX קיים פקד חדש בשם UpdatePanel. בדיוק כמו Panel רגיל הוא מכיל בתוכו פקדים אחרים, אך בנוסף ליכולות של Panel רגיל יש לו יכולות AJAXיות. כל פקד שנמצא בתוך ה-UpdatePanel יכול להתרפרש בצורה דינמית ע"י טריגרים מסויימים. טריגרים לדוגמה ל-UpdatePanel שיגרמו לתוכן שלו להתרפרש: לחיצה כל כפתור, שינוי טקסט ב-TextBox, סימון CheckBox וכמו ששאלת בחירת ערך ב-DropDownList. בתוך האירועים שמתאימים לטריגרים שמים את הקוד שרוצים שישנה את הפקדים בתוך ה-Panel. למשל, במקרה שלנו יהיה לנו מחוץ ל-UpdatePanel פקד DropDownList רגיל לחלוטין.
<asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>www.JustinAngel.Net</asp:ListItem> <asp:ListItem>blogs.Microsoft.co.il</asp:ListItem> </asp:DropDownList>​
נרצה ששינוי של ערך ב-DropDownList יגרום לשינוי כלשהו בדף ונרצה שהוא יהיה AJAXי ולכן נשנה קלות את הקוד של ה-DropDownList שישקף זאת
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> <asp:ListItem>www.JustinAngel.Net</asp:ListItem> <asp:ListItem>blogs.Microsoft.co.il</asp:ListItem> </asp:DropDownList>​
נוסיף לדף UpdatePanel שאמרנו שנרצה שהפקדים בו ישתנו עם שינוי הערך הנבחר ב-DropDownList.
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" /> </Triggers> </asp:UpdatePanel>​
עכשיו נכניס לתוך ה-UpdatePanel שלנו GridView שהמטרה שלה היא להציג לנו את הערך שנבחר כרגע ב-DropDownList:
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <Triggers> <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" /> </Triggers> <ContentTemplate> <asp:GridView runat="server" ID="GridView1" /> </ContentTemplate> </asp:UpdatePanel>​
עכשיו נדאג כי האירוע SelectedIndexChanged יקושר ל-GridView כך שידאג לשנות אותו לערך הנבחר:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { GridView1.DataSource = new string[] {DropDownList1.SelectedItem.Text}; GridView1.DataBind(); }​
כל הקוד הזה לכאורה (ובמיוחד ה-AutoPostBack על ה-DropDownList) היו אמורים לגרום לרפרוש של הדף, אבל הם לא. הכל מתבצע בשורה שקטה ואכן הטקסט הנבחר מופיע בתוך ה-GridView.
 

itaysk

New member
../images/Emo26.gif

קודם כל תודה על התגובה המושקעת! דווקא היום התחלתי קצת עם microsoft ajax וראיתי שזה ממש ממש פשוט ליישם דברים כאלה. אבל מה היתרון של זה על פני הפתרון שהצגתי? הרי הטבלאות לא משתנות, אז למה לא להעביר אותם כבר ללקוח ולחסוך קריאה ל WS \ DB בכל שינוי ערך?
 

Justin Angel

New member
תודה לכולם

למי ששאל, העסק החדש שלי הוא עסק יעוץ עצמאי. המטרה שלי היא להיות זמין לחברות שצריכות יעוץ טכני בפיתוח אפליקציות דוט נטיות או מרגישות שהן מפספסות משהו ורוצות חוות דעת מומחית. כבר יש לי כמה לקוחות שלוקחים את מיטב זמני בעבודה כמו ארכיטקטורה של אפליקציות, שימושים בטכנולוגיות הכי עדכנית, להכניס צוותי פיתוח לכושר עבודה ביחד, הכשרות בנושאים שונים (ASP.Net, Winforms, Multi-threading ועוד המון) וגם יש חברה אחת שמשלמת לי לשבת לעשות Code Review לקוד שלהם עם הצעות שיפור. סה"כ זה משהו חדש עבורי, כי אחרי כמה שנים שהייתי מקובע במקום עבודה הקודם שהקמתי מהיסוד זה לראות מקומות חדשים ולדאוג להם כאילו הם היו שלי.
 
למעלה