我有一个名为has_Amenities的字段名称。此字段名可以同时采用一个,两个,三个,四个或五个值。
价值观是水,电,宠物,全连接,全部
如果has_Amenities =“电力”,则显示电力图标,同时显示宠物的空白图标,完整连接和水龙头。
如果has_Amenities =“pets”,则显示宠物图标以及用于电力,完全连接和水的空白图标
如果has_Amenities =“water”,则显示水图标,同时显示宠物的空白图标,完整连接和电力。
如果has_Amenities =“full”,则显示完整的连接图标,并显示宠物,水和电的空白图标。
如果has_Amenities =“全部”,则表示它有电,水,完全连接和宠物。显示所有四个图标。
我们正在使用gridview和gridview控件id是gridview1。
下面的代码只显示一个值 - 电力。
<asp:TemplateField HeaderText="Facility Has">
<ItemTemplate>
<asp:Image ID="ImageDetailItem" width="22" height="22" ImageUrl='<%# IIF(CONVERT.ToString(Eval("has_Amenities")) = "Electricity", "~/images/icon_amps_50.gif", Eval("location","~/images/icon_waterfront_no.gif")) %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
这不是正确的解决方案。
如何使用上述所有IF条件以及如何在一个单元格中显示所有四个图标?
下面是如何布局的图片。
答案 0 :(得分:1)
您可以将此逻辑放在RowDataBound
事件中。当数据行(由RowDataBound
对象表示)绑定到GridViewRow
控件中的数据时,将引发GridView
事件。这使您能够提供执行自定义例程的事件处理方法,例如,每当发生此事件时,修改绑定到行的数据的值。
以下是您可以用于解决问题的示例代码。
Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim drv As Common.DbDataRecord = CType(e.Row.DataItem, Common.DbDataRecord)
e.Row.Cells(1).Text = "<i>" & e.Row.Cells(1).Text & "</i>"
Image img = e.row.Cells(7).FindControl("image1")
if drv("has_Amenities") = "Electricity" Then
img.ImageUrl = "~/images/icon_amps_50.gif"
elseif
' ////////////////////////////////
' You can place other logic here...
End If
End Sub
答案 1 :(得分:0)
我在asp.net webforms中使用c#做了类似的事情(我希望VB没有太大区别)
<asp:TemplateField>
<ItemTemplate>
<asp:Image runat="server" ImageUrl="<%# ProtectedIsVisible(Item.HasAmenties,"Electricity")? "~/electricity.gif":"~/blank.gif" %>"/>
<asp:Image ID="Image1" runat="server" ImageUrl="<%# ProtectedIsVisible(Item.HasAmenties,"Pets")? "~/pets.gif":"~/blank.gif" %>"/>
<asp:Image ID="Image2" runat="server" ImageUrl="<%# ProtectedIsVisible(Item.HasAmenties,"Water")? "~/water.gif":"~/blank.gif" %>"/>
</ItemTemplate>
</asp:TemplateField>
页面类有protected方法,包含所有逻辑
protected bool ProtectedIsVisible(string[] values,string tag)
我使用了GridView的ItemType属性,设置为强类型模型类,类似于
class Model{ public string[] HasAmenties {get;set; }
<asp:GridView ItemType="MyApplication.Model" runat="server" ID="MyGridView">
答案 2 :(得分:0)
c)SELECT Name,#game
FROM Istitute
WHERE(SELECT COUNT (IDGAME) as #game
FROM Sponsor,Game,Istitute
WHERE(IDGAME=Game.id AND IDISTITUTE=Istitute.id AND VERSIONGAME=Game.Version))
HAVING #game<=10