ניקוי ה DataGrid

Gardner

New member
ניקוי ה DataGrid

שלום. יש לי DataGrid שמשוייכת לטבלה שנמצאת ב DataSet שלי. אני בונה שאילתה דרך הטופס שאני מציג, ורוצה שלחיצה על כפתור תריץ אותה. הבעיה היא בזה שאחרי השאילתה הראשונה, המידע נשאר ב DataGrid (או אולי הוא פשוט נשאר ב DataSet עצמו), והשאילתה החדשה רק מוסיפה רשומות, אבל לא מוחקת את הישנות. איך אני יכול לדאוג לזה שלפני הרצת כל שאילתה, אני מנסה את הגריד ו/או את הסט? תודה.
 

Gardner

New member
ועוד שאלה

איך אני יכול להוריד מה database שלי עמודה מסויימת, יחד עם שאר הטבלה, ולא להציג את העמודה הזאת ב DataGrid? נראה לי הכי הגיוני פשוט לגרום לעמוד להיות ברוחב 0, וכך, כשאני לוחץ על רשומה כלשהי בטבלה, השדה הנסתר הזה של העמודה יהיה זמין, בשביל לשלוף את הנתונים הדרושים משאילתה נוספת, לפקד אחר בטופס.
 

Gardner

New member
ואם אני כבר בשוונג של לשאול

ולקוות שמחר מישהו פה יענה לי - איך אני יוצר אירוע כך שבכל פעם שהמשתמש לוחץ על שורה חדשה ב DataGrid, אני מציג ב label בצד עוד פרטים על אותה הרשומה (מריץ שאילתה חדשה, ומציג את התוצאה ב label)? מאיפה אני מוציא באמת את הערך הזה (מהשאלה הקודמת - שאני עדיין לא יודע איך להחביא), בשביל לשתוך אותו בשאילתה?
 

Gardner

New member
ואם אני כבר בשוונג של לשאול

ולקוות שמחר מישהו פה יענה לי - איך אני יוצר אירוע כך שבכל פעם שהמשתמש לוחץ על שורה חדשה ב DataGrid, אני מציג ב label בצד עוד פרטים על אותה הרשומה (מריץ שאילתה חדשה, ומציג את התוצאה ב label)? מאיפה אני מוציא באמת את הערך הזה (מהשאלה הקודמת - שאני עדיין לא יודע איך להחביא), בשביל לשתוך אותו בשאילתה?
 
נראה הגיוני

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

Gardner

New member
אני מפספס פה משהו...

אני פשוט לא יודע בדיוק איך אני מגדיר את הרוחב 0 הזה. איפה לחפש את זה? ויותר חשוב, השאלה השלישית - (את הראשונה כבר הצלחתי) - איך אני יכול לדעת, אחרי כל שינוי של רשומה נבחרת ב DataGrid שלי, על איזה רשומה הוא נמצא, ולהוציא משם ערכים?
 
לפספס על הבוקר?...

אתה יכול לעשות דבר כזה:
<asp:Label Runat="server" Visible="False" ID="xx" Text='<%# DataBinder.Eval(Container.DataItem, "XXX") %>' >​
ובכדי לעשות מעקב אחרי שורה אתה יכול להגדיר את DataKeyField.
 

Gardner

New member
ממ... סינית

אני יודע קצת c#, איפה אני אמור להכניס את זה? אין פשוט איזה attribute של ה DataGrid שאומר לו איך להציג כל עמודה? או אולי זה נמצא עוד ב DataSet?
 
קצת סדר../images/Emo13.gif

קודם כל תגדיר את הטורים כמו שאתה רוצה. אח"כ תוסיף את ה-label בתוך טור כלשהוא, לא יראו אותו כי visible=false. להגדיר טורים אתה יודע? תגדיר attribute בשם DataKeyField כשם הנתון שנכנס לאחד הטורים (השם מה-db). עד פה ברור?
 

adam222

New member
../images/Emo45.gif

עדיף visible=false מאשר width=0... מכיון שכך הוא לא מרנדר את העמודה ל-client
 

Gardner

New member
תודה על העזרה

אבל איפה אני מוצא את ה attribute הזה? זה צריך להיות ב DataSet? ב DataAdapter שממלא אותו? או ב DataGrid שמציג את הטבלה? ושוב - שאלה 3 - עכשיו אני רוצה ליצור אירוע של לחיצה על ה DataGrid - שיקרא את השורה שהמשתמש לחץ עליה, יוציא משם ערך משדה מסויים (השדה המוחבא של המפתח), ויריץ שאילתה לפי זה. מאיפה אני מוציא את הערך הזה?
 

itaym02

New member
הממן

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

Gardner

New member
אני שמתי לב שיש לי invisible

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

Gardner

New member
לא לא לא לא

יש לי טבלה לגודמה ID Name Age ואני רוצה שהגריד שלי יציג רק את ה Name Age אבל כל זה אחרי שה DataAdapter שלי מביא את שלושת השדות. ואני רוצה שכשהמשתמש ילחץ על שורה בטבלה, אני אריץ מתודה, שתקרא מה ה ID של השורה שהוא לחץ עליה (אפילו שהוא לא רואה את השדה הזה), ותיצור מהשדה הזה שאילתה ל Database שלי. אני כולה רוצה לדעת איך ליצור ב DataGrid טבלה שמסתירה חלק מהעמודות בתצוגה, אפילו שהעמודות קיימות בטבלה (בשביל שאני אוכל להתייחס לערך הזה), וגם לדעת, איך אני יכול במתודה של לחיצה על הגריד שלי, להוציא את הערכים מהשורה הלחוצה.
 

Gardner

New member
אנשים? אין כאן מישהו שיודע איך

להחביא חלק מהעמודות של ה datagrid? ואיך לקרוא מה datagrid את הרשומה שהמשתמש עכשיו נמצא עליה? בבקשה...
 
../images/Emo124.gif הי

נתתי לך תשובה, אבל לא הגבת. הינה דרך אחרת:
<asp:DataGrid Runat=server><Columns><asp:BoundColumn Visible=False></asp:BoundColumn></Columns></asp:DataGrid>​
זה עוזר לך להעלים טור?
 

Gardner

New member
עניתי גם לך

אמרתי לך שאין לי מושג ב asp ואיפה אני אמור להכניס את זה. וה attribute היחידי של visible שאני מוצא, זה של כל ה DataGrid. אבל תודה על ההענות.
 

Gardner

New member
אח.. זה רק אומר שמי שמחפש

מוצא בסוף.. אבל אם מישהו אחר כאן גם תהה איך לעשות את זה, אז
DS.Tables("Customers").Columns("LastName").ColumnMapping = MappingType.Hidden​
עושה את העבודה היטב. עכשיו אני רק צריך לשבת על הגריד עצמו, להוציא ממנו אירוע של לחיצה, ואת השורה שנלחצה..
 
למעלה