Datagird ב- ASP.net

SilentWave

New member
Datagird ב- ASP.net

דבר פשוט שלא הצלחתי לעשות עם ASP.NET. אני משתמש ב datagrid וזה דיי פשוט. אבל מלבד שליפת נתונים פשוטה אני לא מצליח לעשות עם זה כלום - לדוגמא - לעשות משפט תנאי שאם הערך בטבלה הוא 1 יודפס בעמודה "כן" ואם הערך 0 יודפס בעמודה "לא", אני מנסה לעשות את זה בעזרת תגיות <%%> ותנאי if בתוך <item templage> אך הוא מתעלם מזה, התנאי לא מופעל. דוגמא נוספת - יצירת קישור ב asp:hyperlink כשב- navigateurl אני מנסה להוסיף =blabla.html?id ואחרי השיוון אני רוצה להוסיף את מספר העמודה שהוא נמצא בה כרגע ב-DB.. מקווה שהייתי ברור מספיק. גל
 

gilad g

New member
המממ

1. זה בגלל שזה <ItemTemplate> ולא <item template> (בלי רווח
). בכל אופן, הסינטקס אמור להיראות ככה: איפשהו תהיה לך מתודה כזאת:
private string x(int i) { return ( i==1 ? "yes" : "no ); }​
... ב-DataGrid, בחלק של ה-Columns:
<Columns> ..... <asp:TemplateColumn> <ItemTemplate> <%# x(DataBinder.Eval(Container.DataItem, "fldName")) %> </asp:ItemTemplate> </TemplateColumn> ...... </Columns>​
עשיתי את זה פה מכוער, ובלי הזחות - אני מניח שתוכל לעשות את זה לבד. כמו"כ אני חושב שאתה יכול לוותר על הפונקציה x - אבל לא סגור על זה
2. העיקרון פה הוא קצת שונה: שוב, אותו חלק של ה-Columns...:
<Columns> ..... <asp:HyperLinkColumn Header Text="Click this" DataNavigateUrlField="fldName" DataNavigateUrlFormatString="kukuriku.aspx?id={0}" /> ...... </Columns>​
למידע נוסף: HyperLinkColumn Class
 

gilad g

New member
...בקשר ל-1

פה:
<%# x(DataBinder.Eval(Container.DataItem, "fldName")) %>​
שכחתי לעשות casting. לא ממש בא לי לבדוק מה Eval מחזיר, אבל אם הוא מחזיר סטרינג, תצטרך לשנות את x.
 
למעלה