2013-08-30 58 views
0

我正在使用模板字段來顯示圖像根據條件在表字段。如何基於GridView中數據庫的coulmn值顯示圖像?

我已經字段名稱is_selected我用來存儲1或0值

如果它是1,則顯示「〜/圖片/ tick.png」在gridview的圖像顯示其他「〜/圖片/ cross.png」

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" Width="980"> 
<Columns> 
<asp:TemplateField HeaderText="Selected"> 
<ItemTemplate> 
    <asp:Image ID="Image4" runat="server" ImageUrl='<%# (Boolean.Parse(Eval("is_selected").ToString())=="1" ? "~/images/tick.png" : "~/images/cross.png" %>' /> 
</ItemTemplate> 
</asp:TemplateField> 
</Columns> 
</asp:GridView> 

回答

0

,如果你有runat="server"你不能使用ENY邏輯,除非你在隱藏文件代碼中做到這一點。將其更改爲img

<img ID="Image4" src='<%# (Eval("is_selected").ToString()=="1" ? "~/images/tick.png" : "~/images/cross.png" %>' /> 

如果你想後面做代碼:

添加OnItemDataBound="GridView2_ItemDataBound"<asp:GridView>

一下添加到代碼隱藏

public void GridView2_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item) 
    { 
     NameOfTheObject item = (NameOfTheObject)e.Item.DataItem; 


     Image image = (HiddenField)e.Item.FindControl("Image4"); 
     image.ImageUrl= item.is_selected==1 ? "~/images/tick.png" : "~/images/cross.png"; 
    } 
} 
+0

我照你所說的做了,但由於運算符'=='無法應用於類型'bool'和'字符串'的操作數而出現錯誤 – user2240189

+0

我已更新我的答案並將「1」更改爲true – Kimtho6

+0

仍然出現錯誤因爲「System.Data.DataRowView」不包含名稱爲「is_selected」的屬性。在數據庫「is_selected」是位類型 – user2240189

0

的這種相反,你可以這樣做在數據庫端以及查詢

select case is_selected when 1 then'〜/ images/tick.png'else'〜/ images/cross.png'end as select by [table]

試試這個將返回圖像名稱作爲字符串,可以直接將它綁定到你的GridView。

+2

變化你不應該做的視圖的東西在數據庫中查詢......只是說 – Kimtho6

+0

大家都一般數據綁定到的GridView試試這個使用Select語句,以便我們可以在select命令中使用case語句來檢查正確的值,然後我們可以在select查詢中傳遞相關值。這只是一個示例查詢,我們可以根據我們的使用對其進行修改 –

相關問題