שאלה לגבי PageIndexChanged

חמודה01

New member
שאלה לגבי PageIndexChanged

בניתי טבלה באמצעות DATAGRID ואני רוצה ליצור אפשרות שבכל פעם יראו רק משהו כ -10 שורות בטבלה והמשתמש יוכל לדפדף קדימה ואחורה וכך כל פם לראות את המידע בו הוא מעוניין. אני יודעת שלשם כך קיים ה - PageIndexChanged להלן הקוד שרשמתי בנושא זה:
sub DataGrid2_PageIndexChanged(sender As Object, e As DataGridPageChangedEventArgs) DataGrid2.CurrentPageIndex=e.NewPageIndex Grid() end sub לצערי כאשר אני מריצה את הדף ובאה ללחוץ על הסמן שאמור להראות לי את 10 השורות בהאות בטבלה אני מקבלת את הערה הבאה:
Exception Details: System.FormatException: Input string was not in a correct format. Source Error: Line 86: sub datagrid1_commant(sender As Object, e As DataGridCommandEventArgs) Line 87: Dim ID as integer Line 88: ID = Cint(e.item.cells("0").text) Line 89: Line 90: Dim IDemmloyee As System.Data.DataSet = New System.Data.DataSet​
השאלה שלי היא למה הוא בכלל מגיע ל:datagrid1_commant? מצרפת קובץ קוד הדף המלא. אודה על העזרה
 

Zeliran

New member
../images/Emo26.gif

כדי לעשות Paging ל DataGrid, את צריכה לאפשר את הפרופרטי של AllowPaging ואז ב event של PageIndexChanged להשתמש במשהו דומה לזה:(בשביל paging בסיסי..)
private void usrs_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e) { usrs.CurrentPageIndex = e.NewPageIndex; this.DataBind(); }​
שימי לב שהקוד הוא ב C# ולא ב VB.net
 

חמודה01

New member
זה מה שעשתי......לא?

היי תודה על העזרה. אבל לדעתי זה מה שעשיתי: איפשרתי את הפרופרטי של AllowPaging ואם תסתכל בקוד - מצורף בהודעה הראשונה שלי - תראה שכתבתי משהוא דומה. אני כותבת ב-ASP.NET תודה
 

Zeliran

New member
....

קודם כל את לא כותבת ב ASP.net, אלא ב Visual Basic.NET, ASP.net היא טכנולוגיה, ו vb.net זוהי השפה שבה את כותבת... הבעיה שיש לך היא כלל לא קשורה ל paging... (דרך אגב, עשית dataBind בסוף הפונקציה של ה paging?) תנסי להתמקד בפונקציה שמופיעה כאשר את מקבלת את הודעת השגיאה.. כי מן הסתם שם נמצאת השגיאה..
 

חמודה01

New member
שוב שאלה....

שוב שאלה: הפונקציה אליה אני מופנת בהערה מופיע בכלל בקוד של דף אחר אשר בינו לבין הדף הנ"ל לא אמור להיות אף קשר. אז למה אני מופנת אליה בהערה? וכן עשיתי בסוף dataBind ועדיין קיבלתי את ההערה.
 

Zeliran

New member
casting..

מצטט את sharkyM.. "casting משנה את ההתייחסות של הקומפיילר למשתנה בזיכרון של המחשב."
 

icaesar

New member
בואי ננסה כמה דברים

א. נתקלתי בהודעות מסוג זה בעבודה מול DB וזה בדר"כ היה באמת בעיה של המרות לא מסודרות בין data types שונים גם בקריאות לפונקציות. ב. תדאגי שבאמת כל ה properties הרלוונטים הקשורים ל paging מוגדרים נכון. ג. ממליץ בחום לחקור את נושא ה casting. זה דיי אלמנטרי בתכנות למרות שמטופל בצורה דיי טובה ואוטומטית בהרבה מקרים ב VB. בהצלחה
 

icaesar

New member
ועוד משהו

תבדקי את שורה 88, בה את מאתחלת את המשתנה ID ע"י האובייקט שייזם את התגובה. תנסי לגשת לתא הזה בצורה אחרת
 

sharkyM

New member
אהממממ...

לפי הקוד בשורה 88
ID = Cint(e.item.cells("0").text)​
תנסי לבצע Convert.ToInt לערך במקום cast, מאידך יכול להיות שהערך הוא ריק (string.empty) או סתם מחרוזת ואז את יכולה ליפול.
 

חמודה01

New member
איך מבצעיםConvert.ToInt?

שלום, האם הדבר אמור להרשם באופן הבא: (Convert.ToInt(e.item.cells("0").text ניסיתי לקרוא על זה MSDN אבל לא מצאתי על זה כלום.
 

sharkyM

New member
אם את מקבלת את אותה שגיאה

כנראה שיש לך ערך שהוא מחרוזתי ולא מספרי ולכן ה-convert לא מצליח
 

חמודה01

New member
אבל מה הפתרון?

הרי ה-PAGING מחזיר ערף של 0,1,2 וכדומה שהם ערכים מספריים INTERGR והשורה בא נוצרת השגיאה אמורה לקבל ערך מסוג STRING מחרוזת. ניסתי להמיר את משתנה הPAGING ל - STRING ללא הצלחה . איך אני עושה זאת? משהוא יודע? ניסתי להמיר גם על ידי CSTR
 

gilad g

New member
תסבירי לי רגע

מה מטרת השורות האלו:
Dim ID as integer ID = Cint(e.item.cells("0").text) Dim IDemmloyee As System.Data.DataSet = New System.Data.DataSet IDemmloyee = RetrivInfo(ID)​
 

חמודה01

New member
אז ככה..

מטרת השורות האלו: כאשר לוחצים על אחת מן השדות בטבלה ניתן לראות בתוך TEXTBOX את המידע שבשדה זה לפי משתמש ומשתמש. לשם כך אני משתמשת ב-ID בשורה הבעיתית אני קולטת את מספר ה- ID של אותו משתמש מן הטבלה שמוגדר בבסיס הנתונים כ-STRING ומהמירה אותו לINTEGER . ולפי אותו ID אני מושכת מן בסיס הנתונים את המידע המתאים לו מאותו שדה.
 
למעלה