סינטקסט של IF משולש

24sharon

New member
גם אני חיפשתי את זה

http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=831&msgid=86380709 לא זוכרת איך פתרתי את זה בזמנו. אפשר באמצעות להוציא את כל הפונקציה ולהחזיר STRING של התמונה אפשר לדוגמא לקרוא לתמונה בשם 1 או 2 או 3 ואז להציג לפי ערך הטקסט. הכל לפי העניין בהצלחה!
 

men52

New member
למה אתה צריך את זה בדיוק ?

אני שואל מפני שלדעתי אולי הפתרון צריך להיות אחר. לדוגמה ב DATAGRID בכדי לשלוט בתוכן ה ITEM ניתן להשתמש במתודה ONITEMDATABOUND.
 

moshe1822

New member
נכון אבל זה עובד יותר מהר

כאשר אני עובד עם ה IF בתוך ITEM לא רץ בלולאות ב ONITEMDATABOUND
 

men52

New member
למה לולאות ?

למה לולאות בתוך ה ITEMDATABOUND ? בכלל שאני חושב שה ITEMDATABOUND זו צורת עבודה נכונה יותר מלהכניס לוגיקות בתוך ה GUI(אבל זה רק אני...).
 

men52

New member
דוגמה...

נניח שיש לי DATAGRID . באחת העמודות יש לי שדה של תאריך. אני רוצה שכאשר השדה הזה מכיל את הערך של ה DATE המינימלי (אני לא זוכר כרגע למה הוא שווה אבל זה לא משנה לדוגמה שלנו.) , אז אני רוצה שהוא לא יציג כלום ב LABEL שמכיל שצריך להכיל את התאריך. אתה היית עושה איזה IF ובודק את ערך הלייבל. הפתרון שלי הוא כזה :
private void dgMyDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { if ( ((Label)e.Item.FindControl("lbldateBirth")).Text==DateTime.MinValue.ToShortDateString() ) ((Label)e.Item.FindControl("lbldateBirth")).Text=""; } }​
כמובן שהבדיקה של ה MINVALUE היא לא חשובה. היינו יכולים לבדוק כל ערך אחר...
 

men52

New member
מה זאת אומרת ?

מה זאת אומרת "להכניס את הכל לפונקציה" ולמה ? מה זה הכל ? השורה וחצי ?
 

24sharon

New member
קצת סדר.

על מנת ליצור משתנה IF בתוך GRID יש כמה דרכים: נאמר העניין הוא להוסיף תמונות לגריד על פי משתנה בגריד ויו. 1. אם רוצים להציג תמונה מתאימה, יש דרך לעשות זאת בדרך עוקפת. לדוגמא יש לי ערכים 0,1,2 ואני מעוניינת להציג תמונות בהתאם לערכים. יש דרך לעשות זאת ע"י לקרוא לתמונות בשם 0.GIF וכן 1.GIF וכן 2.GIF ואז בגריד להוסיף:
<ItemTemplate> <img src="<%# Eval("comeFromID") %>.gif" /> </ItemTemplate>​
2. הדוגמא שJUNKY התכוון היא להכניס את כל הנתונים לתוך פונקציה. הנה דוגמא לכך: בגריד לכתוב:
<ItemTemplate> <%# showPicture(Container.DataItem)%> </ItemTemplate>​
ולהוציא לפונקציה חיצונית כך:
protected string showPicture(object d) { int s = (int)DataBinder.Eval(d, "comeFromID"); switch (s) { case 1: return "<img src=\"0.gif\" />"; case 2: return "<img src=\"1.gif\" />"; default: return "<img src=\"2.gif\" />"; } }​
והדרך השלישית אליה התכוון MEN52 שהיא קצת יותר מסובכת אבל יש בה הרבה יותר אפשרויות זה הקוד בגריד
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="comeFromID" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound">​
ובקוד כותבים כך:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { string id; if (e.Row.RowType == DataControlRowType.DataRow) { id = ((DataRowView)e.Row.DataItem).Row["comeFromID"].ToString(); if (id == "1") { e.Row.Cells[2].Controls.Add(new LiteralControl("<img src=\"1.gif\" />")); e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#b6dcf3'"); } if (id == "2") { e.Row.Cells[2].Controls.Add(new LiteralControl("<img src=\"2.gif\" />")); e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='red'"); } } }​
זה למשל דוגמא שגם צובעת את השורות כשעוברים מעליהם (בהתאמה לערכים), ועוד הרבה אפשרויות שקיימות. אחת מה-3 בטוח תפתור לך את הבעיה.
 

men52

New member
אחלה...

משום מה אף פעם לא חשבתי על אפשרות 2. אחלה...
 

moshe1822

New member
יש עוד אפשרות

שהיא IF משולש (באנגלית קוראים לזה IF מקוצר נראה לי) נגיד שיש לי רק 2 ערכים 0 ו- 1 אם אמת עשה כך אחרת כך comeFromID ? 1.gif : 2.gif איך אני מכניס את זה ל <img src="<%# Eval("comeFromID") %>.gif" />
 

EdotK

New member
->

<%# Convert.ToInt32(Eval('comeFromID')) == 12 ? 'firstString' : 'secondString' %>​
 

24sharon

New member
במידה והיית נכנס ללינק שהבאתי

בראש השרשור היית מוצא
<ItemTemplate> <asp:Image ID="Image2" ImageUrl='<%# Eval("ItemStatusID").ToString().Equals("2") ?"~/Images/meeting1.gif":"~/Images/false.gif" %>' runat="server" Width="30px" CssClass="floatR" /> <%# Eval("ItemStatus")%> </ItemTemplate>​
וזה נקרא תנאי מקוצר
 
למעלה