הסתבכתי עם ה - VALIDATION

doher

New member
איך הכי כדי לעשות וולידציה לקלט ?

מהמשתמש. האם אפשר לעשות stored procedure לwindows application או רק ל web application ? יש לי נתונים שישירות נזרקים לפקודות SQL מה textbox והבעיה מתחילה ברגע שהמשתמש לא הקליד כלום או הקליד ספרות במקום מספר אז התוכנית מתרסקת (exceptiopn).. מה מומלץ לעשות ? ועוד שאלה קצרה כיצד הכי טוב לקלוט תאריך מסויים מהמשתמש (לא הנוכחי) 1) בעזרת שלושה combobox (אחד לימים, השני לחודש, והשלישי לשנה) 2) או בתור מחרוזת רגילה (ואז יכו להיות שאחד יקיש ככה : 16/6/2000 והשני יקיש ככה 16.6.2000 והשלישי 16,6,2000 . מה כדאי במקרה כזה ? בתודה מראש
 

Zeliran

New member
........

קיימים פקדי ואלידציה (גם ב asp.net וגם ל winForms) קיימים מספר סוגים למספר צרכים.. למשל כאלו שמחייבים קלט, כאלו שבודקים מסכת קלט ועוד ועוד..
 

Zeliran

New member
......

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

doher

New member
10X ../images/Emo13.gif אני אבדוק את זה

זה היתרון ב .net יש לך מלא פקדים מוכנים ויעילים. הבעיה זה לדעת את כולם(בלתי אפשר). ב - Documentation אני לאמוצא את עצמי, וב MSDN.COM אני מקבל חום עוד לפני שהאתר עולה
.....
 

HaRmosh

New member
אתה יכול לתת קצת פרטים

בקשר ל-Validation ב-WinForms ? חיפשתי על זה חומר, בכלל לא משהו... לפחות אם תוכל להסביר בסיסי מה זה ואיך משתמשים, אני אודה לך מאוד
 

Zeliran

New member
......

הפקד נקרא ErrorProvider, אתה יכול לחפש עליו בגוגל, msdn בלי סוף..
 

doher

New member
מצאתי דוגמה טובה ל-validation

http://www.c-sharpcorner.com/Code/2002/Oct/ErrorProvider.asp
 

doher

New member
הסתבכתי עם ה - VALIDATION ../images/Emo163.gif

אני צריך לקבל לתיבת טקסט רק מספרים חיוביים והבעיה מתחילה ברגע שמקישים טקסט... מה כדאי לעשות ? כי אז פעולת ה PARSE נכשלת על תיבת הטקסט כי יש שם טקסט ולא מספר מה כדאי לעשות ? private void textBox2_Validating(object sender, System.ComponentModel.CancelEventArgs e) { ValidateNum1(); } private bool ValidateNum1() { bool bStatus = true; if (int.Parse(textBox2.Text) >= 1) { errorProvider1.SetError (textBox2,""); bStatus = false; } else errorProvider1.SetError (textBox2,"אנא לחץ מספר חוקי"); return bStatus; }
 

doher

New member
איך עכשיו ?

}
private void textBox2_Validating(object sender, System.ComponentModel.CancelEventArgs e) { ValidateNum1(); } private bool ValidateNum1() { bool bStatus = true; if (int.Parse(textBox2.Text) >= 1) { errorProvider1.SetError (textBox2,""); bStatus = false; } else errorProvider1.SetError (textBox2,"אנא לחץ מספר חוקי"); return bStatus;​
 

doher

New member
עוד משהו

ב - C# במשפט IF - "&&" אומר "וגם". איך כתובים "או" ?
 

HaRmosh

New member
שני דברים

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

doher

New member
היכן לשים את ה- try-catch ??

בתוך המשפט IF ?? זה אפשרי ??
 

HaRmosh

New member
כנס ../images/Emo26.gif

עדיף כך:
int a; try { a = Parse(...) } catch (Exception ex) { ... // do something } if (a < 1...) { ... }​
כלומר לעבוד עם הערך של המשתנה רק לאחר שבטוחים שלא נתפסה חריגה
 

doher

New member
יש !!! הצלתי....תראה את הקוד

private void textBox2_Validating(object sender, System.ComponentModel.CancelEventArgs e) { ValidateNum1(); } private bool ValidateNum1() { int num=0; try {num = int.Parse(textBox2.Text);} catch (Exception ex) { errorProvider1.SetError (textBox2,"אנא לחץ מספר חדרים חוקי"); } bool bStatus = true; if (textBox2.Text != "" && num !=0 && int.Parse(textBox2.Text) >= 1) { errorProvider1.SetError (textBox2,""); bStatus = false; } else errorProvider1.SetError (textBox2,"אנא לחץ מספר חוקי"); return bStatus; }​
 
רעיון אחר../images/Emo3.gif

אתה יכול להוסיף לתיבת הטקסט:
<asp:regularexpressionvalidator id="RegularExpressionValidator2" Runat="server" ControlToValidate="textBox2" ErrorMessage="אנא הכנס מספרים בלבד" Display="Dynamic" ValidationExpression="\d*"/>​
וכך אתה בטוח שהכניסו מספר, ואז תעשה ולידציה שהוא חיובי.
 

doher

New member
אפשרי אבל......

זה WINFORM ולא WEB ודבר שני VALIDATION זה משהו שמומלץ לעשות אצל הלקוח על מנת להקטין את ה - Round Trip
 
איזו אכזבה../images/Emo7.gif../images/Emo5.gif

אין פקדי ולידציה ב- WinForm????? הסתכלתי עכשיו וכנראה שאין
 
למעלה