קצת סדר.
על מנת ליצור משתנה 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 בטוח תפתור לך את הבעיה.