需要在asp:BoundField中显示图标

时间:2014-10-29 19:03:52

标签: asp.net

目前,我的字段绑定到布尔值并显示文本:" true"或" false"。

如果字段为true,我希望此字段显示图标,否则不显示任何内容。

我该怎么做?

 <asp:BoundField DataField="IsLocked" HeaderText="Locked" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" 
                        SortExpression="IsLocked" ItemStyle-Width="4%" ItemStyle-Wrap="false" HeaderStyle-Wrap="false"> </asp:BoundField>   

2 个答案:

答案 0 :(得分:2)

您可以使用itemtemplate直接使用它。这将始终具有图像,如果IsLocked为假,则会隐藏图像。

<asp:TemplateField>
    <ItemTemplate>
        <asp:Image ID="mimg" runat="server" ImageUrl="icon.jpg" Visible='<%# Eval("IsLocked").Equals(true) ? "True": "False" %>' />
    </ItemTemplate>
</asp:TemplateField>

icon.jpg替换为实际图像路径。

答案 1 :(得分:1)

<asp:GridView id="gvLocker" OnRowDataBound="gvLocker_RowDataBound" runat="server">
    <Columns>
        <asp:TemplateField HeaderText="Locked">
            <ItemTemplate>
                <asp:Image ID="imgLocked" ImageUrl="/images/locked.png" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

并在您的代码隐藏中:

    protected void gvLocker_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            var imgLocked = (Image) e.Row.FindControl("imgLocked");

            imgLocked.Visible = (bool) DataBinder.Eval(e.Row.DataItem, "IsLocked");
        }
    }